만들고 있는 로직에, 환자를 추가할 때 lastVisit을 입력하지 않으면, default value로 오늘 날짜가 추가되도록 구현을 원한다.
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
~
~
@Generated(GenerationTime.INSERT)
@Column
private LocalDate lastVisit;
hibernate의 Generated 어노테이션을 사용하면, 된다고 하지만 안됨.
@Column(nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private LocalDate lastVisit;
null값이 들어왔다고 오류가 생성된다.
public static Patient createPatient(PatientRequestDTO patientDTO) {
if(patientDTO.getLastVisit() == null) {
return Patient.builder()
.pId(patientDTO.getPId())
.name(patientDTO.getName())
.sex(patientDTO.getSex())
.phone(patientDTO.getPhone())
.firstVisit(patientDTO.getFirstVisit())
.lastVisit(LocalDate.now())
.birthday(patientDTO.getBirthday())
.memo(patientDTO.getMemo())
.build();
}
return Patient.builder()
.pId(patientDTO.getPId())
.name(patientDTO.getName())
.sex(patientDTO.getSex())
.phone(patientDTO.getPhone())
.firstVisit(patientDTO.getFirstVisit())
.lastVisit(patientDTO.getLastVisit())
.birthday(patientDTO.getBirthday())
.memo(patientDTO.getMemo())
.build();
}
만약, 오늘 날짜만 받는 경우만 있다면 간단하게 리턴해주면 되지만
이전에 등록하지 않았던 환자 정보를 추가하는 작업이 있다면 마지막 방문일자를 직접 입력해야하는 상황도 발생한다. 그래서 어쩔 수 없이 분기 처리로 해결했지만, 아무리 봐도 저 코드는 아닌 것 같다ㅠㅠㅠㅠ