假设我有 3 个抽象超类SuperA:SuperB和SuperC. 假设这些超类中的每一个都有很多更具体的实现,并且所有超类都用@Inheritance(strategy = InheritanceType.JOINED).
更详细:
Aa<-SuperA并且有一个SuperB(bbs属性)的列表;Bb<-SuperB并且有一个SuperC(ccs属性)的列表;Cc<-SuperC并且有一个foo属性。
然后,当我尝试如下查询时,我收到一条错误消息,指出它找不到footype 中的属性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……但是,至少它有效。