@SequenceGenerator für die mit @MappedSuperclass annotierte Klasse

8

Ich habe folgende Struktur meiner Entitäten:

%Vor%

Und ich habe folgende Ausnahme:

%Vor%

Wenn ich @MappedSuperclass zu @Entity in Intermed Klasse ändere, funktioniert alles OK. Gibt es Probleme bei der Verwendung von @MappedSuperclass und @SequenceGenerator? Oder habe ich etwas verpasst?

    
glaz666 31.08.2010, 09:24
quelle

2 Antworten

9

Hier ist, was die JPA 1.0 Spezifikation über die SequenceGenerator Annotation sagt:

  

9.1.37 Sequenzgenerator Annotation

     

Die SequenceGenerator Annotation   Definiert einen Primärschlüsselgenerator, der   kann namentlich referenziert werden, wenn a   Generatorelement ist für die angegeben    GeneratedValue Annotation. EIN   Sequenzgenerator kann angegeben werden    für die Entitätsklasse oder für das Primärschlüsselfeld oder die Eigenschaft . Das   Der Geltungsbereich des Generators ist global   zur Persistenzeinheit (über alle   Generatortypen).

Und eine zugeordnete Superklasse ist keine Entität. Entsprechend der Art, wie ich die Spezifikation lese, ist das, was du machen willst, nicht möglich. Machen Sie entweder die Intermed -Klasse zu einer Entität oder geben Sie die SequenceGenerator für die Unterklassen an.

    
Pascal Thivent 31.08.2010, 21:55
quelle
10

Ich stieß auf das gleiche Problem, das in dieser Frage beschrieben wurde, während ich versuche, anwendungsweite ID-Generatoren zu erreichen.

Die Lösung ist eigentlich in der ersten Antwort: Setzen Sie den Sequenzgenerator auf das Primärschlüsselfeld .

Wie so:

%Vor%

Während ich Dinge mache, scheint dieser Weg bemerkenswert dumm (zumindest für mich) funktioniert es.

    
Kallja 21.06.2011 18:11
quelle