Hibernate + JPA @Filter for嵌套属性对象
问题描述:
所以我理解如何使用JPA/Hibernate过滤器的立即子属性(这里演示:annotation to filter results of a @OneToMany association),但我想要做的是使用嵌套属性排除引用。所以如果C不是作为B的参考,我不希望B包含在集合中。这是一个不起作用的代码示例。它抱怨c.Active在哪里列不明。这是因为生成的sql包含c_0.is_active作为参考。有没有办法做这样的事情?Hibernate + JPA @Filter for嵌套属性对象
@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{
与测试的任何运气? –