Java Hibernate使用错误类型的@discriminatorvalues子类生成查询
我拥有连接类型的实体的继承关系Java Hibernate使用错误类型的@discriminatorvalues子类生成查询,java,oracle,hibernate,jpa,named-query,Java,Oracle,Hibernate,Jpa,Named Query,我拥有连接类型的实体的继承关系 @Entity @Table(name = "MSM_SUBSCRIPTION") @DiscriminatorColumn(name = "SUBSCRIPTIONTYPE", discriminatorType = DiscriminatorType.STRING, length = 100) class subscription { } @DiscriminatorValue("com.xxx.XXXSubscription") @Table(name
@Entity
@Table(name = "MSM_SUBSCRIPTION")
@DiscriminatorColumn(name = "SUBSCRIPTIONTYPE", discriminatorType = DiscriminatorType.STRING, length = 100)
class subscription {
}
@DiscriminatorValue("com.xxx.XXXSubscription")
@Table(name = "XXX")
public class XXXSubscription extends Subscription implements Serializable {
}
当我尝试使用命名查询时,例如
SELECT s.class AS subscriptiontype,
FROM
Subscription s
它将导致以下查询
select
case
when s1_.subscriptionId is not null then com.xxx.XXXSubscription
when s.subscriptionId is not null then 'Subscription'
end AS subscriptiontype,
from
MSM_SUBSCRIPTION s
left outer join
XXXSubscription s1_
on s.subscriptionId=s6_.subscriptionId
它抛出一个错误,如下所示
-ORA-00904: "COM"."xxx"."MMSSUBSCRIPTION": invalid identifier
正如我所注意到的,在生成的查询中,case语句周围没有标记,在使用DiscriminatorValue'com.xxx.XXXSubscription'周围的标记手动触发此查询时,查询运行良好
有人能帮忙吗???试试这个
您可以使用@heritation注释定义超类
@Entity
@Table(name = "MSM_SUBSCRIPTION")
**@Inheritance(strategy = InheritanceType.SINGLE_TABLE)**
@DiscriminatorColumn(name = "SUBSCRIPTIONTYPE", discriminatorType = DiscriminatorType.STRING, length = 100)
class subscription {
}
@DiscriminatorValue("com.xxx.XXXSubscription")
@Table(name = "XXX")
public class XXXSubscription extends Subscription implements Serializable {
}
在我看来,您需要在超类上使用@heritation标记,这样子类只需要@discriminatorvalue(“”)