2017-02-18 8 views
0

すぐサブプロパティ(ここで示す:annotation to filter results of a @OneToMany association)にJPA/Hibernateフィルタを使用する方法を理解していますが、参照を除外するためにネストされたプロパティを使用します。 CがBの参照としてアクティブでない場合、私はBがセットに含まれることを望んでいません。以下は、動作しないコードの例です。それはc.Activeが列のどこに不明であるかについて不平を言う。これは、生成されたSQLにc_0.is_activeが参照として含まれているためです。このようなことをする方法はありますか?Hibernate + JPAネストされたプロパティオブジェクト用のフィルタ

@Entity 
public class A implements Serializable{ 
    @Id 
    @Column(name = "REF") 
    private int ref; 

    @OneToMany 
    @JoinColumn(name = "A_REF", referencedColumnName = "REF") 
    @Filter(name="test") 
    private Set<B> bs; 
} 

@Entity 
@FilterDef(name="test", defaultCondition="c.ACTIVE = 1") 
public class B implements Serializable{ 
    @Id 
    @Column(name = "A_REF") 
    private int aRef; 

    private C cObject; 
} 


@Entity 
public class C implements Serializable{ 
    @Id 
    private int ref; 

    @Column(name = "ACTIVE") 
    private boolean active; 
} 

答えて

0

このように他のテーブルへの参照を使用することはできません。テストで

@Entity 
@FilterDef(name="test", defaultCondition="aRef = 
       (select b.aRef 
       from B b inner join C c on c.ref = b.cRef 
       where c.ACTIVE = 1)" 
public class B implements Serializable{ 
+0

運:

はこれを試してみてください? –

関連する問題