wie persistiere ich eine abstrakte Superklasse?

Goldfish

Bekanntes Mitglied
Hi, ich versuche schon ne ganze Weile eine abstrakte Klasse zu persistieren.
Mein Ziel ist folgendes:

Ich habe eine Entity-Klasse Storage und eine abstrakte Superklasse (FileReceiver) mit MappedSuperclass annotiert.
Dazu dann noch eine weitere Entity (DataFile), die zur Storage-Entity gehört.

Storage extends FileReceiver...

was ich jetzt will, ist später auf ein beliebiges FileReceiver Objekt zuzugreifen und dieses in der Datenbank zu persistieren, bzw. es nur zu updaten. Existieren tun die Objekte in der Datenbank in der regel schon.

Aber das ganze klappt leider nicht. Der Code sieht hier wie folgt aus.

Java:
    public void ChangeAndPersist(FileReceiver fileReceiver, DataFile dataFile)
            throws DatabaseInvalidDataSubmittedException, DatabaseConcurrentModificationException {
        entityManager = DatabaseManager.getNewEntityManager();
        entityManager.getTransaction().begin();
        fileReceiver.addDataFile(dataFile);
        entityManager.getTransaction().commit();
    }

das funktioniert nicht, weil ich den FileReceiver nicht in den Persistenz-Context kriege... was kann ich tun, um das Problem zu lösen?
 

stg

Top Contributor
Ist deine abstrakte Klasse auch als @Entity annotiert? Dann kannst du doch einfach deinen FileReceiver in die DB mergen.. Wenn ich dein Problem falsch verstanden habe, dann frag einfach nochmal :)
 

Goldfish

Bekanntes Mitglied
hat sich erledigt.
Ich **** hab zwei verschiedene EntityManager-Objekte verwendet, weshalb es klar ist, dass das Objekt nicht im Kontext enthalten ist... jetzt gehts.
 

Ähnliche Java Themen

Neue Themen


Oben