2012-07-23 2 views
0

두 개의 테이블 중 하나가 다른 하나의 부모가됩니다. 하위 테이블에는 유효 기간을 결정하는 시작 날짜 및 종료 날짜 열이 있습니다. 다음 필터 설정 만 유효 아이들 로딩 작동합니다최대 절전 모드 필터 하위

@Entity 
@Table(name = "child") 
@FilterDef(name = "dateFilter", parameters = @ParamDef(name = "targetDate", type = "string")) 
@Filter(name = "dateFilter", condition = "(:targetDate between to_char(startDate, 'yyyyMMdd') and to_char(endDate, 'yyyyMMdd')") 
public class Child {} 

내가 원하는 것은 부모 엔티티 정의로 시작하는 모든 부모 만 유효 아이를로드하는 것입니다.

@Entity 
@Table(name = "parent") 
public class Parent { 
    @OneToMany(mappedBy = "parent") 
    private Collection<Child> childCollection = new HashSet<Child>(); 
}  

가 어떻게 아이들에 작용하는 부모 엔티티 클래스에 대한 필터를 지정합니까 : 다음 코드는 모든 아이들뿐만 아니라 올바른 사람을로드?

답변

1
@Entity 
@Table(name = "parent") 
@FilterDef(name = "dateFilter", parameters = @ParamDef(name = "targetDate", type = "string")) 
public class Parent { 
    @OneToMany(mappedBy = "parent") 
    @Filter(name = "dateFilter", condition = "(:targetDate between to_char(startDate, 'yyyyMMdd') and to_char(endDate, 'yyyyMMdd')") 
    private Collection<Child> childCollection = new HashSet<Child>(); 
} 

그리고 당신은 필터를 사용 확인 ...

+0

@FilterDef 주석은 클래스에 가능하지만,이 보정으로 작동된다. 귀하의 답을 수정하여 편집했지만 "이 수정 사항은 동료 검토가 완료 될 때까지만 볼 수 있습니다." 아무튼 감사 해요! – lbalazscs

+1

네, 그렇습니다. METHOD/FIELD에서는 허용되지 않습니다. 그러나 완전히 정확하기 위해서는 TYPE (클래스)에만 국한되지 않습니다. PACKAGE에 정의 할 수도 있습니다. 이미 누군가가 편집을 거부 한 것을 눈치 채 셨습니다. 업데이트 할 것입니다. (제 자신이 할 수 있다고 생각합니다 ...) –