可以为此 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
'.
谢谢。
可以为此 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
'.
谢谢。
正如@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();