1

2つのテーブルがあり、一方が他方の親になっています。子テーブルには、有効性を決定する開始日列と終了日列があります。次のフィルター設定は、有効な子のみをロードするために機能します。

@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>();
}    

子に作用する親エンティティクラスのフィルターを指定するにはどうすればよいですか?

4

1 に答える 1

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>();
} 

そして、必ずフィルターを有効にしてください...

于 2012-07-23T20:17:46.267 に答える