假设存在以下实体(未编写JPA注释):
class Questionnaire {
...
}
class Policy {
private Questionnaire questionnaire;
...
}
class LifeQuestionnaire extends Questionnaire {
private String someField;
}
class LifePolicy extends Policy {
...
}
看起来策略引用了问卷,但是
LifePolicy
引用了LifeQuestionnaire
(此限制始终为true)。有什么办法可以写这样的查询:
from LifePolicy lplc
where ((LifeQuestionnaire) lplc.questionnaire).someField = :fieldValue
如您所见,我想在HQL查询中进行某种类型的转换,因为
someField
仅在LifeQuestionnaire
中可用。 最佳答案
我遇到了完全相同的问题,并且找到了适合我的解决方案。它不是很好,但可以。尝试使用“交叉”联接。例如
select (specify what you want to fetch)
from LifePolicy as lp, LifeQuestionnaire as lqn
inner join lqn.questionnaire as q
where lqn.id = lp.id
and q.someField = :fielfValue
资料来源:
https://www.jumpingbean.co.za/blogs/mark/hibernate
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-from