JPA und Vererbung

miketech

Bekanntes Mitglied
Hallo zusammen,

ich habe folgende Situation:

Code:
@Entity
public class Element { ... }

public class SpecialElement extends Element { ... }

public class Controller {
   public void persist(Element e) {
     .. Persisting Element
   }
}

Mein Problem ist, dass das Persistieren mit JPA nicht klappt, wenn ich ein SpecialElement übergebe, weil er angeblich das übergebene Objekt nicht kennt. Ich vermute es liegt daran, dass SpecialElement nicht als Entity vermerkt ist.

Ich will aber gar nicht, dass SpecialElement als Entität hinterlegt wird, sondern dass SpecialElement zu einem Element gecastet wird und dann nur der Teil von SpecialElement gespeichert wird, der auch eben Teil eines Element ist.

Wie setze ich das denn am besten um? Muss ich aus dem SpecialElement erst ein neues Element erzeugen und das dann persistieren?

Viele Grüße

Mike
 

Jeziro

Neues Mitglied
Hi miketech

Da SpecialElement von Elements erbt, würde ich dir empfehlen die Klasse Elements mit der @MappedSuperClass Annotation zu versehen (die Mappings auf der Klasse gelten dann nur noch für die Subklassen, da für die Superclass selber, keine Tabelle angelegt wird).

Somit werden alle Variablen der Element Klasse, der SpecialElement Klasse vererbt. Mit der @Transient Annotations, kannst du zusätzlich steuern, welche Variablen (Attribute) persistiert bzw. in die DB aufgenommen werden sollen.
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben