可以为此SQL构建Criteria查询:
SELECT P.This FROM Position P INNER JOIN PersonOnPosition PP ON PP.Tail = P.This WHERE PP.Tail IS NOT NULL
我想将Hibernate Criteria移植到自定义SQL方言(自定义ECM框架),但我遇到了JOIN
'的麻烦。
感谢。
答案 0 :(得分:1)
正如@Julien Langlois所指出的,这取决于你的实体定义。
假设您定义了类似
的关系@Entity
class PersonOnPosition {
@ManyToOne
@JoinColumn(name="Tail")
Position position;
}
你可以选择
session.createCriteria(PersonOnPosition.class, "PP")
.createAlias("position", "P")
.setProjection(Property.forName("P.This"))
.add(Property.forName("PP.position").isNotNull())
.list();
如果未定义关系,则可以使用子查询获得相同的结果:
DetachedCriteria personOnPositionWithTail = DetachedCriteria.forClass(PersonOnPosition.class, "PP")
.setProjection(Property.forName("PP.Tail"))
.add(Property.forName("PP.Tail").isNotNull());
session.createCriteria(Position.class, "P")
.setProjection(Property.forName("P.This"))
.add(Property.forName("P.This").in(personOnPositionWithTail))
.list();