gpt4 book ai didi

java - Hibernate ORing 两个标准

转载 作者:行者123 更新时间:2023-11-30 09:46:21 24 4
gpt4 key购买 nike

首先,这是关于两个标准的 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(...) 但我不确定如何。我会将最后一个标准添加到哪个标准?第一个?

最佳答案

使用析取:

Disjunction dis = Restrictions.disjunction();
dis.add(Restrictions.eq("precinct.id", areaId));
dis.add(Restrictions.eq("overlaps.id", areaId));
criteria.add(dis);

请注意,您可能需要为 precinctoverlaps 添加别名。

关于java - Hibernate ORing 两个标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7192438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com