2
首先,這是關於ORing兩個標準,而不是兩個標準。休眠ORing兩個標準
作爲查詢的一部分,我想這樣做:
from voters v
left join addresses a on v.addressId = a.addressId
left join precincts p on a.areaId = a.precinctId
left join overlaps o on o.areaId1 = p.areaId
where p.areaId = ? or o.areaId2 = ?
和兩個?是相同的價值。我已經得到了一點,但現在卡住了。這是我有什麼
criteria = session.createCriteria(Voter.class);
addressCriteria = criteria.createCriteria("address");
precinctCriteria = addressCriteria.createCriteria("precinct");
overlapsCriteria = precinctCriteria.createCriteria("overlaps");
我想要做以下,但它不起作用。
SimpleExpression lhs = Restrictions.eq("precinct.id", areaId);
SimpleExpression rhs = Restrictions.eq("overlaps.id", areaId);
LogicalExpression criterion = Restrictions.or(lhs, rhs);
那麼,我真的該怎麼辦?我認爲它涉及createAlias(...),但我不知道如何。我將添加最後一條標準到哪個標準?第一個?
謝謝。這讓我更接近我需要的地方。我不得不使用createAlias(),這是我之前沒有用過的。然而,最終我得到了太多的結果。我需要使用Distinct或子查詢。工會顯然沒有問題。我會先嚐試子查詢。 –