JPA Extended Entity persistent machen

Dieses Thema JPA - Extended Entity persistent machen im Forum "Application Tier" wurde erstellt von Flashbaer, 28. Sep. 2012.

Thema: Extended Entity persistent machen Hallo, ich habe eine Klasse X, die eine Entity E extended. Nun möchte ich das Object der Klasse X persistent...

  1. Hallo,

    ich habe eine Klasse X, die eine Entity E extended. Nun möchte ich das Object der Klasse X persistent machen.
    Der Persistence Manager meckert jetzt aber: X is not a known entity type.

    Casten bringt in diesem Fall ja nichts.

    Kann ich das Objekt der Klasse X irgendwie in ein Objekt der Klasse E umwandeln oder dem Entity Manager sagen er soll die Klasse E hernehmen?

    Viele Grüße
    Flashbaer
     
  2. Vielleicht hilft dir das Grundlagen Training weiter --> *Klick*
  3. Sym
    Sym
    JPA selbst sagt, dass eine Klasse mit @Entity annotiert sein muss, damit diese persistiert werden kann.

    Ich könnte mir jedoch vorstellen, dass casten funktioniert. Hast Du das explizit versucht?

    Ansonsten die erbende Klasse Annotieren. Dort die entsprechende Tabelle von E angeben und die zusätzlichen Felder als transient markieren.

    Mir ist jedoch nicht klar, warum Du das so machen möchtest. So ohne weitere Informationen liest sich das nicht sehr sauber.
     
  4. Wieso klappt casten nicht? Du sagst das so selbstverständlich ... und ich kann hier gerade leider nicht testen ^.^

    Oder willst du die zusätzlichen Informationen von X ebenfalls persistieren? Dann kannst du z.B. mal hier nach Möglichkeiten schauen: Java Persistence/Inheritance - Wikibooks, open books for an open world

    Sonst kann man natürlich noch eine neue E-Instanz mit den passenden Werten erstellen und diese dann persistieren...
     
  5. tfa
    tfa
    Muss X vielleicht noch in die persistence.xml eingetragen werden?
     
  6. @Fant
    wenn ich Caste bringt das insofern nichts, da der Entity Manager selbst nach der Klasse des übergebenen Objekts sucht.

    Wenn ich dem EntityManager (E)X übergebe, dann meckert er trotzdem, dass X nicht persistent gemacht werden kann, da sich die Klasse ja nicht ändert.

    Gibt es denn keinen Weg außer X in die Persistenz mit aufzunehmen? Ich würde das gerne verhindern, da hier Daten nur temporär gespeichert werden die ich nicht in der Datenbank haben möchte...
     
  7. Sym
    Sym
    Du könntest das Objekt einfach in eine eine Instanz der Entität mappen.
     
  8. Ich stehe wohl gerade auf dem Schlauch...
    Wie genau soll das gehen?

    ---

    Edit:
    Ok Schlauch ist geplatzt :)
    Ich werde es dann wohl so machen wie du sagst, danke vielmals!
     
    Zuletzt bearbeitet: 1. Okt. 2012
  9. Sym
    Sym
    Entweder per Hand einfach ein new E() und dann alle Felder kopieren oder etwas wie Dozer verwenden.
     
  10. Kostenloses Java-Grundlagen Training im Wert von 39 €
    Schau dir jetzt hier das Tutorial an und starte richtig durch!