0

可以为此 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'.

谢谢。

4

1 回答 1

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();
于 2013-04-26T17:03:40.057 回答