繁体   English   中英

嵌套属性对象的Hibernate + JPA @Filter

[英]Hibernate + JPA @Filter for Nested Property Object

因此,我了解了如何将JPA / Hibernate过滤器用于即时子属性(在此处进行了演示: 用于过滤@OneToMany关联结果的批注 ),但是我想做的是使用嵌套属性来排除引用。 因此,如果C没有作为B的参考有效,则我不希望B包含在集合中。 这是无效的代码示例。 它抱怨c.Active在where列中未知。 这是因为生成的sql包含c_0.is_active作为参考。 有没有办法做这样的事情?

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

我认为您不能以这种方式使用对其他表的引用。

尝试这个:

@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{

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM