JPA 2.0:TYPE表达式异常

时间:2010-12-01 16:00:45

标签: java inheritance jpa-2.0 jpql

我有一个继承结构与类,让我们说Parent(作为根类)和Child作为子类。

因此,使用JPA 2.0,我只能使用

选择Parent类
SELECT p FROM Parent p WHERE TYPE(p) = Parent

这只应返回Parent的条目,而不是子条目。

但是我的EclipseLink 2.1.1和Glassfish v3上的MySql,我总是收到以下错误:

"Invalid Type Expression on [my.domain.Parent].  The class  
does not have a descriptor, or a descriptor that does not use  
inheritance or uses a ClassExctractor for inheritance". 

另外,我手动定义没有orm-mapping。我认为这都是在部署时自动完成的。

我是否需要添加到我的Parent / Child类(注释即)来声明继承结构? (但我认为这不应该是必要的,因为继承是由Java声明的,是吗?)

修改
我没有提到的一个重要方面是我正在使用继承方法“TABLE_PER_CLASS”。

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

Jum Tough的解决方案对我不起作用。但问题只能与继承方法“TABLE_PER_CLASS”结合使用,并且所有其他继承策略类型表达式都可以正常工作。

我认为这是EclipseLink中的一个错误,因为我在JPA 2规范中找不到任何明显排除的内容,表明类型表达式不适用于TABLE_PER_CLASS。

格里