如何使用Spring JPA/Hibernate实现Join With Temporary Table



这是我的场景,我有3个实体/表,比如MainEntity、EntityA和EntityB。它们的属性和关系如下所示。

主要实体[实体ID,实体名称,实体类型]

实体A[实体ID,实体名称,typeId]

实体B[typeId,实体类型,]

在SQL中,可以实现如下输出。

从mainEntity中选择mainEntity.*作为mainEnity INNER JOIN(选择A.entityID,A.entityName B.entityType from EntityA作为A LEFT JOIN EntityB作为B在A.typeId=B.typeId上(作为Temp on mainEnity.entityID=Temp.enityID AND mainEnity.entityName=Temp.entityName AND mainEnity.typeId=Temp.typeId;

是否有人可以帮助使用标准生成器为上述SQL提供等效的Hibernate代码。

HQL与SQL非常相似。一个很大的区别是,它不支持from子句中的子查询,但大多数时候你并不需要。您的查询可以重写为以下内容:

SELECT mainEntity 
FROM MainEntity AS mainEnity 
JOIN EntityA AS A ON mainEnity.entityID = A.enityID AND mainEnity.entityName = A.entityName
JOIN EntityB AS B ON mainEnity .typeId = B.typeId

最新更新