假设我有 3 个抽象超类SuperA
:SuperB
和SuperC
. 假设这些超类中的每一个都有很多更具体的实现,并且所有超类都用@Inheritance(strategy = InheritanceType.JOINED)
.
更详细:
Aa
<-SuperA
并且有一个SuperB
(bbs
属性)的列表;Bb
<-SuperB
并且有一个SuperC
(ccs
属性)的列表;Cc
<-SuperC
并且有一个foo
属性。
然后,当我尝试如下查询时,我收到一条错误消息,指出它找不到foo
type 中的属性SuperC
。Bb
有一个抽象类型的列表,我不能改变它。所以,我不知道如何使查询工作。
select a from Aa a left outer join a.bbs b where b.ccs.foo = :foo
任何提示都会有所帮助。提前致谢。
编辑:
顺便说一句:例外:
org.hibernate.exception.SQLGrammarException: Unknown column 'cc3_1_.foo' in 'where clause'
编辑2:
如果我不使用 Hibernate,我会查找 JPA 文档,并找到一些可行的方法。
编辑3:
我将其更改为使用两个 SQL。首先,我根据foo
属性找到 C 的 id,然后我只做与 id 比较的查询。
这里的问题是,每次我想要这个时我都必须执行 2 个 SQL……但是,至少它有效。