你可以尝试用 HQL 做这样的事情:
String sqlText =
"select entityA
from EntityA entityA, EntityB entityB
where entityA.fieldA=entityB.fieldA
and entityA.fieldC=(select sum(entityB.fieldB)
from EntityB entityB
where entityB.fieldA=entityA.fieldA)"
Query query = session.createQuery(sqlText);
它应该与您的 sql 类似。关于您的陈述-我知道您不能在 HQL 中使用内部视图,因为它是面向对象的。
这是一篇关于 HQL 中连接的好文章。
编辑:
根据 user1495181 的注释,上面的查询可以重写为(但我不确定):
String sqlText =
"select entityA
from EntityA entityA
join entityA.entitiesB entityB
Where entityA.fieldC=(select sum(entityB.fieldB)
from EntityB entityB
where entityB.fieldA=entityA.fieldA)"
但我更喜欢第一个变体,因为对我来说它更容易理解(尤其是对于曾经使用原生 SQL 的人来说)。