0
我有多個實體需要被一個行統一過濾。爲了保持簡單,我想在每個上使用@Filter,而不是改變涉及的每個查詢。 現在,當我激活兩個@Filters時,只應用了一個(來自實體中的一個),所加入實體的@Filter被忽略而沒有錯誤消息。 最小例如: 實體A:@Filter兩個實體在一個QueryDSL中的查詢結果在一個where子句中
@Entity
@FilterDef(name="ExampleFilterA", [email protected](name = "version", type = "integer"))
@Filters({
@Filter(name="ExampleFilterA", condition=":version = MY_VERSION") })
@Table(name = "TABLE_A")
public class EntityA implements Serializable {
private Integer myVersion;
@Column(name = "MY_VERSION")
public Integer getMyVersion() {
return myVersion;
}
public void setMyVersion(Integer myVersion) {
this.myVersion = myVersion;
}
...other columns...
}
EntityB類似於
加載方法:
EntityManager em = getEntityManager();
Session session = em.unwrap(org.hibernate.Session.class);
Filter filterA = session.enableFilter("ExampleFilterA");
filterA.setParameter("version", 1);
Filter filterB = session.enableFilter("ExampleFilterB");
filterB.setParameter("version", 1);
JPAQuery exampleQuery = query()
.from(A)
.join(A.entityB, B);
現在這個生成查詢(從服務器日誌截取),其具有隻有WHERE ? = TABLE_A.MY_VERSION
,沒有where的TABLE_B。結果:期望的數據加上來自表B的錯誤版本entrys。