![](/img/trans.png)
[英]How to enforce write lock on table row using JPA/Spring/Hibernate
[英]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.