繁体   English   中英

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

[英]How to achieve Join With Temporary Table using Spring JPA/Hibernate

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

MainEntity [ entityID, entityName, entityType ]

EntityA [ entityID, entityName, typeId ]

EntityB [ typeId, entityType, ]

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

从 MainEntity 中选择 mainEntity.* as mainEnity INNER JOIN (SELECT A.entityID, A.entityName B.entityType FROM EntityA as A LEFT JOIN EntityB as B on A.typeId=B.typeId) as 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM