2012-04-04 5 views
1

Ich habe folgende @ MappedSuperclass und @Entity:Warum funktioniert meine @MappedSuperClass nicht?

@MappedSuperclass 
public class SuperClass implements Serializable {....} 

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
@Table(name = "TABLE1") 
public class Table1 extends SuperClass implements Serializable {...} 

@Entity 
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS) 
@Table(name = "TABLE2") 
public class Table2 extends SuperClass implements Serializable {...} 

In der Datenbank, die beide Tabelle haben die gleichen Spalten, so dass alle meine Attribut sind in der Oberklasse:

@Id 
private String attr1; 

@Id 
private String attr2; 

@Column(name="DATA") 
private String data; 

// getters and setters 

Aber wenn ich versuche, Führen Sie eine Abfrage mit einem des @Entity (Tabelle 1 oder Tabelle 2), erhalte ich eine OpenJPA ERROR:

Error pre-processing class table1 with we[email protected]205c54b' 
<openjpa-1.1.0-r422266:657916 fatal user error> 
org.apache.openjpa.util.MetaDataException: Type "class SuperClass" with application identity and no superclass does not declare an id class. 
This type is not eligible for builtin identity, so it must declare an id class. 

ich verstehe nicht, warum das Attribut @Id nicht fo werden und in der @Entity Klasse.

Wenn jemand irgendwelche Ideen haben, fühlen Sie sich frei, mir zu helfen :)

Grüße,

Cytemax

+0

Meine @Entity-Klasse muss eine @IdClass (SuperClassPK.class) haben, weil mein Primärschlüssel zwei Eigenschaften enthält (attr1 & attr2). – Cytemax

+0

Diese @IdClass deklariert die beiden Eigenschaften und muss die Methoden "equals" und "hascode" überschreiben. Vielleicht hilft das jemand anderem;). – Cytemax

Antwort

0

Vielen Dank für dieses Cytemax in Ihre Kommentare zu beantworten. Ich fand mehr Informationen für clarafication hier: http://openjpa.apache.org/builds/1.0.0/apache-openjpa-1.0.0/docs/manual/manual.html#jpa_overview_pc_identitycls

Das angegebene Beispiel verwendet keine Anmerkungen, aber Sie erwähnten sie in Ihren Kommentaren. Irgendwie eine seltsame Sache für openJPA, aber wenn ich die Tabellen- und Java-Objekthierarchie in meinem Kopf betrachte, ist das irgendwie sinnvoll.