我有一个 sql 查询:
select * from A
INNER JOIN B
ON A.id = B.id
INNER JOIN C
ON B.id = C.id
INNER JOIN D
ON C.id = D.id
where D.name = 'XYZ'
and D.Sex = 'M'
我一直在尝试为上述 sql 提供休眠查询条件,但是遇到了问题。任何人都可以帮忙。
我有一个 sql 查询:
select * from A
INNER JOIN B
ON A.id = B.id
INNER JOIN C
ON B.id = C.id
INNER JOIN D
ON C.id = D.id
where D.name = 'XYZ'
and D.Sex = 'M'
我一直在尝试为上述 sql 提供休眠查询条件,但是遇到了问题。任何人都可以帮忙。
Criteria c = session.createCriteria(A.class, "a");
.createAlias("a.b", "b")
.createAlias("b.c", "c")
.createAlias("c.d", "d")
.add(Restrictions.eq("d.sex", "M"))
.add(Restrictions.eq("d.name", "XYZ"));
在您的问题上,您想要执行笛卡尔 Join,这不受 Criteria 的支持,尽管您可以使用 HQL 执行此操作,如下所示。这里有一个类似的问题
使用 HQL 查询,您可以执行以下操作:
select a from
A a,
B b,
C c
where
a.id = b.id and
c.id = b.id and
d.id = c.id and
d.name = 'XYZ' and
d.sex = 'M'
该查询用于常规休眠查询:
Query query = session.createQuery(query); // <-- here you use the query above
List results = query.list();