# Mehrfachableitungen von Entitäten



## LStrike (22. Okt 2013)

Hallo zusammen,

ich bin seit Ende April 2013 unter die J EE Entwickler gekommen.
Ich kann soweit sagen, die Arbeit mit J EE 6 inkl. JPA und Hibernate, CDI, JSF und PrimeFaces macht mir Spaß und ich lerne jeden Tag neues.


Nun zu einer aktuellen Fragestellung:

Das man in J EE Klassen (oder besser Entitäten) wie in Java ableiten kann ist mir bewusst.
Auch habe ich eine grobe Vorstellung davon, wie man so etwas macht.

Aber ich bin mir nicht sicher ob ich es richtig gemacht habe.

Umgesetzt habe ich eine "einfach Ableitung" wie folgt:


```
@Entity
@Table(name = "BASE_RESSOURCE", schema = "JCCPRINT")
@Inheritance(strategy = InheritanceType.JOINED)
public class Ressource{

private Integer id;

....

//Getter and Setter
@Id
  @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
  @NotNull
  @GeneratedValue(strategy = GenerationType.TABLE, generator = "key_gen")
  public Integer getId() {
    return this.id;
  }

  public void setId(Integer id) {
    this.id = id;
  }
  
  ......

}

@Entity
@Table(name="MWEB_SYSTEMLANDSCHAFT_RES", schema = "JCCPRINT")
@Inheritance(strategy = InheritanceType.JOINED)
public class SystemlandschaftRessource extends Ressource{

private String dokumentationsLink;

...

//Getter and Setter
@Column(name = "DOKUMENTATIONSLINK", length = 500)
	@Size(max=500)
	public String getDokumentationsLink() {
		return dokumentationsLink;
	}

	public void setDokumentationsLink(String dokumentationsLink) {
		this.dokumentationsLink = dokumentationsLink;
	}

	....
}
```

Dazu erst einmal die Frage, ist das so richtig?

Meine zweite Frage wäre dann, wie könnte ich jetzt eine Ableitung von der SystemlandschaftRessource machen?


Was auch nicht verkehrt wäre, gibt es eine vernünftige Dokumentation, Tutorial oder Literatur, wo auch dieses Thema behandelt wird. In der "Standarddokumentation" von Oracle - The Java EE 6 Tutorial bin ich diesbezüglich nicht fündig geworden.

Grüße
Markus


----------



## KSG9|sebastian (25. Okt 2013)

Die Vererbung von JPA-Entitäten unterscheidet sich nicht von der "normalen" Vererbung in Java.


```
@Entity
class UpEntity {

}

@Entity
class SubEntity extends UpEntity {

}

@Entity
class SubSubEntity extends SubEntity {

}

@Entity
class AnotherSub extends UpEntity {

}
```

Vererbungstyp siehe hier: InheritanceType (Java EE 6 )

Oder was genau ist unklar?


----------



## LStrike (28. Okt 2013)

Moin moin,

"Normale" Java-Ableitungen sind mir bekannt, mir ging es vielmehr darum, wie ich mit den Annotationen umgehen muss, dass ist mir noch nicht ganz klar.

Eine kurze Erläuterung oder Literaturhinweis würde mir schon reichen.

Grüße
Markus


----------



## KSG9|sebastian (28. Okt 2013)

6.  Inheritance

Ganz grob..
Single Table: Die ganze Klassenhierarchie wird in einer Tabelle gespeichert.
Joined: Eine Tabelle pro Klasse. Die Felder der Klasse werden in der Tabelle gespeichert, die Felder der superklasse in einer "Obertabelle"
Table per Class: Eine Tabelle pro Klasse incl aller Felder sowie Felder der Superklassen


----------



## LStrike (28. Okt 2013)

Das ist doch mal eine gute Aufstellung, vielen Dank.

Grüße
Markus


----------

