2017-04-21 14 views
2

새로운 과도 필드를 추가 내가 가진 내가 개체가 생성 될 때 자동으로 설정 개체에 내부적으로이 분야의 dateAndyear을 갖고 싶어이기존 @Enity

@Entity 
class Dates{ 

     @Column(name="day"); 
     private String day; 


     @Column(name="year"); 
     private String year; 

     //getters and setters 


     //this is I want to have like dateAndyear=day+"-"+year or even create date object based on day and year 
     private String dateAndyear; 


} 

같은 엔티티. 그리고 나서이 필드를 Criteria API의 "where"절에서 사용하기를 원합니다.

+0

일부 코드로 자세히 설명하겠습니까? –

+0

나의 최종 목표는 일 및 년 필드에서 Date 객체를 생성하고 Criteria Builder의 "between"함수를 사용하여 엔티티를 검색하는 것입니다. – MagGGG

+0

데이터베이스에 'day'와'year' 열이있는 이유는 무엇보다 왜 'Strings'입니까? ? 당신은 그것으로 인한 문제를 해결하기보다는 디자인을 고치는 데 집중해야합니다. – Kayaman

답변

1

과도 필드는 직렬화 프로세스의 일부가 아니며 databse에서 유지되지 않으므로 criteria 절에서 where 절로 사용할 수 없습니다. 그러나 생성자를 사용하여 생성자를 사용하여 항상 초기화 할 수 있으며, 내부적으로 최대 절전 모드로 초기화하지 않을 수 있습니다.

+0

sth처럼 할 방법이 없습니다? predicates.add (criteriaBuilder.equal (루트. get ("dateAndyear"), date)); ? – MagGGG

+1

Transient 필드가 데이터베이스에 없기 때문에 Criteria 쿼리가 데이터베이스에서 실행되므로 실제로 질문해야합니까? –

+0

Puneet/Billy가 정확합니다. 검색어에 transient를 사용할 수 없습니다. DB에있는 필드는 쿼리가 실행될 때만 사용할 수 있습니다. –