【问题标题】:How to achieve Join With Temporary Table using Spring JPA/Hibernate如何使用 Spring JPA/Hibernate 实现 Join With Temporary Table
【发布时间】:2021-02-27 05:05:56
【问题描述】:

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

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

实体A [ 实体ID, 实体名称, 类型标识 ]

实体B [ 类型标识, 实体类型, ]

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

Select mainEntity.* from 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 代码吗?

【问题讨论】:

  • 你能告诉我们你的尝试吗?

标签: java spring hibernate spring-data-jpa


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2020-03-05
    • 2018-05-13
    • 2018-12-04
    • 1970-01-01
    • 2011-04-11
    • 2017-08-21
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多