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
Meine @Entity-Klasse muss eine @IdClass (SuperClassPK.class) haben, weil mein Primärschlüssel zwei Eigenschaften enthält (attr1 & attr2). – Cytemax
Diese @IdClass deklariert die beiden Eigenschaften und muss die Methoden "equals" und "hascode" überschreiben. Vielleicht hilft das jemand anderem;). – Cytemax