JPA LocalDate default value 설정
만들고 있는 로직에, 환자를 추가할 때 lastVisit을 입력하지 않으면, default value로 오늘 날짜가 추가되도록 구현을 원한다.
1. @Generated 사용
import org.hibernate.annotations.Generated;
import org.hibernate.annotations.GenerationTime;
~
~
@Generated(GenerationTime.INSERT)
@Column
private LocalDate lastVisit;
hibernate의 Generated 어노테이션을 사용하면, 된다고 하지만 안됨.
2.
@Column(nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private LocalDate lastVisit;
null값이 들어왔다고 오류가 생성된다.
3. 정적 팩토리 메소드 내부에서
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();
}
만약, 오늘 날짜만 받는 경우만 있다면 간단하게 리턴해주면 되지만
이전에 등록하지 않았던 환자 정보를 추가하는 작업이 있다면 마지막 방문일자를 직접 입력해야하는 상황도 발생한다. 그래서 어쩔 수 없이 분기 처리로 해결했지만, 아무리 봐도 저 코드는 아닌 것 같다ㅠㅠㅠㅠ
Author And Source
이 문제에 관하여(JPA LocalDate default value 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choitree_/JPA-LocalDate-default-value-설정저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)