Ich habe eine Vererbungsbeziehung von Entitäten mit verbundenen Typ.Hibernate generiert Abfrage mit falschem @ discriminatorvalues der Unterklassen
@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 {
}
Wenn ich versuche, eine benannte Abfrage zu verwenden, wie
SELECT s.class AS subscriptiontype,
FROM
Subscription s
Es wird in der folgenden Abfrage
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
, die einen Fehler wirft, wie unten führt.
-ORA-00904: "COM"."xxx"."MMSSUBSCRIPTION": invalid identifier
Wie ich bemerkt haben, gibt es keine Tags um die Case-Anweisung in generierten Abfrage manuell diese Abfrage mit Tags um die ‚com.xxx.XXXSubscription‘ DiscriminatorValue abfeuern, die Abfrage läuft gut.
Kann mir bitte jemand helfen ??
meiner Meinung nach müssen Sie @inheritance Tag auf Super-Klasse auf diese Weise Subklassen müssen nur @discriminatorvalue („“) verwenden, –