wie persistiere ich eine abstrakte Superklasse?

Dieses Thema wie persistiere ich eine abstrakte Superklasse? im Forum "Data Tier" wurde erstellt von Goldfish, 26. Mai 2014.

Thema: wie persistiere ich eine abstrakte Superklasse? Hi, ich versuche schon ne ganze Weile eine abstrakte Klasse zu persistieren. Mein Ziel ist folgendes: Ich habe...

  1. 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.

    Code (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?
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*
  3. stg
    stg
    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 :)
     
  4. die Klasse ist als MappedSuperclass annotiert. Diese soll keine eigene Tabelle erhalten.
     
  5. hat sich erledigt.
    Ich **** hab zwei verschiedene EntityManager-Objekte verwendet, weshalb es klar ist, dass das Objekt nicht im Kontext enthalten ist... jetzt gehts.
     
  6. KOSTENLOSES Java-Grundlagen Training im Wert von 39 € Sichere dir hier den kostenlosen Zugriff auf umfangreiches Java-Know How und starte richtig durch!