G
Guest
Gast
Hi,
ich versuche seit geraumer Zeit eine Entität mittels JPA-Annotations zu deklarieren, leider mit nur mäßigem Erfolg.
Meine Absicht ist es, eine "Basis-Entität" zu bauen, die die wichtigsten Attribute aus mehreren Entitäten enthält.
Wieso das Ganze? Ich habe eine bereits vorliegende Datenbank mit vielen Entitäten, deren Tabellen ich nur sehr ungern manipulieren möchte.
Darüber hinaus erweitern einige Entitäten diese "Basis-Entität".
Die Besonderheit hierbei ist, dass ich mit JOINS (LEFT OUTER JOINS und INNER JOINS) arbeite, um einige Attribute aus "fremden" Tabellen zu erhalten:
In meiner Basisentität muss ich also unterschiedliche Tabellen und deren Spalten ansprechen.
Meine Frage: Muss ich nun die unterschiedlichen Tabellen direkt zu Beginn der Deklaration der Entität angeben? Also ähnlich wie hier:
Oder muss ich die entsprechende Tabelle und die betroffene Spalte vor dem Setter des Attributs deklarieren?:
Das ganze Thema scheint mir bei komplexen Entitäten nicht trivial. Deswegen wäre es nett, wenn mir jemand diesbezüglich einen Tipp geben könnte.
ich versuche seit geraumer Zeit eine Entität mittels JPA-Annotations zu deklarieren, leider mit nur mäßigem Erfolg.
Meine Absicht ist es, eine "Basis-Entität" zu bauen, die die wichtigsten Attribute aus mehreren Entitäten enthält.
Wieso das Ganze? Ich habe eine bereits vorliegende Datenbank mit vielen Entitäten, deren Tabellen ich nur sehr ungern manipulieren möchte.
Darüber hinaus erweitern einige Entitäten diese "Basis-Entität".
Die Besonderheit hierbei ist, dass ich mit JOINS (LEFT OUTER JOINS und INNER JOINS) arbeite, um einige Attribute aus "fremden" Tabellen zu erhalten:
Code:
SELECT buch.buch_id, buch.zustaendiger,
profil1.realname AS ZustaendigerName,
profil1.login_name AS ZustaendigerEMail
FROM Buch
LEFT OUTER JOIN profil profil1 ON (buch.zustaendiger = profil1.benutzerid)
LEFT OUTER JOIN profil profil2 ON (buch.berichterstatter = profil2.userid)
In meiner Basisentität muss ich also unterschiedliche Tabellen und deren Spalten ansprechen.
Meine Frage: Muss ich nun die unterschiedlichen Tabellen direkt zu Beginn der Deklaration der Entität angeben? Also ähnlich wie hier:
Code:
@Entity
@Table(name = "MyFirstTable")
@SecondaryTables( {
@SecondaryTable(name = "MyFirstTable_MySecondTable",
pkJoinColumns={
@PrimaryKeyJoinColumn(name="MyFirstTable_id", referencedColumnName="id"),
@PrimaryKeyJoinColumn(name="MySecondTable_id")}, uniqueConstraints = {@UniqueConstraint (columnNames = {"MySecondTable_id"}) }))
Oder muss ich die entsprechende Tabelle und die betroffene Spalte vor dem Setter des Attributs deklarieren?:
Code:
@Table(name = "MySecondTable")
@Column(name = "AndererNameAlsDasAttribut")
public void setAttribute(Attribute attr) {
this.attribute = attr;
}
Das ganze Thema scheint mir bei komplexen Entitäten nicht trivial. Deswegen wäre es nett, wenn mir jemand diesbezüglich einen Tipp geben könnte.