2
我想過濾只顯示「活動」實體,同時進行查詢,使用過濾器和基地MappedSuperClass和運行到相關的表類不尊重相同的過濾器的問題。與MappedSuperClass相關的表上的休眠過濾器
這裏是我的模型設置:
@FilterDef(name="baseStatus")
@Filter(name="baseStatus", condition= "Status = 'A'")
@MappedSuperclass
public abstract class BaseModel {
@Column(name = "Status", insertable = false)
private String status;
// getters and setters...
}
我也有那些相關的收藏品型號,如..
@Entity
@Table(name = "A")
public class A extends BaseModel {
@OneToMany()
private List<B> bs = new ArrayList<B>(0);
// other model properties
}
@Entity
@Table(name = "B")
public class B extends BaseModel {
// model properties
}
查詢之前,我跑:
Criteria criteria = sessionFactory.getCurrentSession().createCriteria(A.class)
Filter filter = getCurrentSession().enableFilter("baseStatus");
List<A> as = criteria.list();
使用此設置我得到正確的過濾器應用於我正在查詢的主類,但子集(「bs」)不會被過濾加入,所以我只留下活躍的「A」與「B」的兒童收藏,其中一些「B」是無效的。
理想情況下,我想只在BaseModel上有過濾器。沒有任何方法可以做到我正在尋找的東西,而無需在每個關聯上應用單獨的過濾器?
謝謝!