Во-первых, речь идет об ИЛИ двух критериях, а не двух.
В рамках запроса я пытаюсь сделать это:
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 (...), но я не уверен, как. И к каким критериям я бы добавил этот последний критерий? Первый?