我的问题与此非常相似:
How can I write a Hibernate Criteria query, for a super-class, and check for a certain sub-class?
...,除了一件事:
我正在引用一个超级表/实体类(Round),它有两个子表/实体类(RankingRound和EliminationRound)。然后我创建了一个JOIN:
SELECT
...
??? AS is_ranking_round
...
FROM Group gr
JOIN gr.round rd
...
WHERE
有没有办法在JPQL中找到如上所述的rd实例的圆形类型? (我似乎无法将标准转换为适用于JPQL的任何内容。)
答案 0 :(得分:2)
这仅适用于JPA 2.0。 JPA 1没有TYPE。
获取类型为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