Reputation: 69
I have an inheritance relationship of entities with joined type.
@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 {
}
When I'm trying to use a named query such as
SELECT s.class AS subscriptiontype,
FROM
Subscription s
It is resulting in the following query
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
Which throws an error as below.
-ORA-00904: "COM"."xxx"."MMSSUBSCRIPTION": invalid identifier
As I noticed, there are no tags around the case statement in generated query, on manually firing this query with tags around the DiscriminatorValue 'com.xxx.XXXSubscription', the query is running fine.
Can someone please help ??
Upvotes: 1
Views: 437
Reputation: 457
try this you can define super class with @inheritance annotation
@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 {
}
Upvotes: 1