Hibernate JPQL:从超类联接确定子类类型?
我的问题与此非常相似: …,除了一件事:Hibernate JPQL:从超类联接确定子类类型?,hibernate,inheritance,jpa,jpql,ejbql,Hibernate,Inheritance,Jpa,Jpql,Ejbql,我的问题与此非常相似: …,除了一件事: 我使用的是JPQL查询,而不是Hibernate Criteria API(不过仍然是Hibernate作为JPA提供者) 我引用了一个超级表/实体类(Round),它有两个子表/实体类(RankingRound和EliminationRound)。然后创建一个联接: SELECT ... ??? AS is_ranking_round ... FROM Group gr JOIN gr.round rd ... WHERE
- 我使用的是JPQL查询,而不是Hibernate Criteria API(不过仍然是Hibernate作为JPA提供者)
SELECT
...
??? AS is_ranking_round
...
FROM Group gr
JOIN gr.round rd
...
WHERE
有没有一种方法可以像上面在JPQL中一样找到rd实例的round类型?(我似乎无法将标准转换为在JPQL中工作的任何内容。)这只适用于JPA2.0版本。JPA 1没有类型 要将类型获取为java.lang.Class,请执行以下操作:
Select TYPE(rd) FROM Group gr JOIN gr.round rd
将类的类型映射到字符串:
SELECT
CASE TYPE(rd)
WHEN RankingRound THEN 'RankingRound'
WHEN EliminationRound THEN 'EliminationRound'
ELSE 'Not mapped'
END
FROM Group gr JOIN gr.round rd