Frage

Unter der Annahme, ich eine Klasse A haben wie folgt:

class A{
   int id;
   int getId(){};
   void setId(int id){};
}

Und eine Klasse B wie folgt:

@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}

Wie kann ich das geerbte ID-Feld von A mit Anmerkungen versehen, so dass Hibernate / JPA weiß es die Id  für das Unternehmen? Ich versuchte einfach platzieren @Id auf dem Feld in A, aber das hat nicht funktioniert. ich versucht, ein von einem Unternehmen als auch, und dies auch nicht funktionierte zu machen.

War es hilfreich?

Lösung

Angenommen, Sie nicht die übergeordnete Klasse wollen selbst eine Einheit darstellen, Sie @MappedSuperclass auf der Super-Klasse verwenden können, haben Unterklassen die Eigenschaften für die Persistenz erben:

@MappedSuperclass
class A{
   int id;
   @Id
   int getId(){};
   void setId(int id){};
}

Betrachten wir die übergeordnete Klasse abstrakt machen. Siehe diesem Abschnitt des Dokuments für weitere Details.

Andere Tipps

Es gibt eine Reihe von Strategien, die Sie verwenden können. Hier ist etwas, das Sie versuchen können:

@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
class A{
   int id;

   @Id @GeneratedValue
   int getId(){};
   void setId(int id){};
}


@Entity
@Table(name="B")
class B extends A{
   string name;

   @Column(length=20)
   string getName(){}
   void setName(){}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top