这是我的场景,我有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