我有兩個具有一對多關係的實體對象(A和B)。我正在使用JPA(Hibernate)來連接這些表並查詢它們以獲取特定的結果集,但是在獲取我的結果時不會應用我爲子表(B)指定的條件。這就是我所定義的查詢:在一對多關係中指定子表的標準
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<A> query = builder.createQuery(A.class);
Root<A> a = query.from(A.class);
Join<A, B> abJoined = a.join(A_.b);
query.distinct(true)
.where(builder.and(
builder.equal(a.get(A_.id), id),
builder.equal(a.get(A_.active), 1),
builder.equal(a.get(A_.location), 1011),
builder.equal(a.get(A_.status), "Pending"),
builder.equal(abJoined.get(B_.status), "Not Moved"),
builder.greaterThan(abJoined.get(B_.detailId), 0)
));
當我打電話entityManager.createQuery(query).getResultList();
我得到實體的「A」一個實例,但是當我試圖通過「A」 a.getB()
兩個標準,我不得不進入「B」指定爲abJoined
未應用,並且我獲得了連接到'A'的'B'的所有實例。我還需要做些什麼來獲得這些標準?如果標準不能應用,是否有推薦的方法從結果集中去除相應的'B'實例?
我可以根據需要提供更多代碼或其他細節。
這是有道理的,我認爲這可能是問題。是否有推薦的方法去除結果集中不需要的'B'實例? – Christopher
使用查詢選擇它們,並使用ManyToTone關聯反轉來獲取它們的A. –