gpt4 book ai didi

java - 如何将 HQL 中引用的实体转换为其子类

转载 作者:行者123 更新时间:2023-12-02 11:52:45 24 4
gpt4 key购买 nike

假设有以下实体(不写JPA注解):

class Questionnaire {
...
}

class Policy {
private Questionnaire questionnaire;
...
}

class LifeQuestionnaire extends Questionnaire {
private String someField;
}

class LifePolicy extends Policy {
...
}

看起来政策引用了调查问卷,但 LifePolicy 引用了 LifeQuestionnaire (此限制始终为真)。

有什么方法可以编写这样的查询:

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

关于java - 如何将 HQL 中引用的实体转换为其子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com