Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate使用错误类型的@discriminatorvalues子类生成查询_Java_Oracle_Hibernate_Jpa_Named Query - Fatal编程技术网

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(“”)