Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[JPA] oracle.xdb.XMLType opslaan

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn database is een oracle XML database die het type SYS.XMLType gebruikt. Wanneer ik dit overhaal naar mijn entity is dit geen probleem:
Java:
1
2
3
    @Column(name = "ARTIKEL_XML")
    @Lob
    private XMLType artikelXml;

Hiermee kan ik netjes de XML uit de database halen en lezen, wanneer ik echter de XML aanpase:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("data");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        WebeMakrArtikel wma = (WebeMakrArtikel) em.find(WebeMakrArtikel.class, 1L);
        XMLType c = wma.getArtikelXml();
        String s = "<test></test>";
        System.out.println(c);
        c = XMLType.createXML(c.getJavaSqlConnection(), s);
        wma.setArtikelXml(c);
        System.out.println(wma.getArtikelXml().getStringVal());          
        em.getTransaction().commit();
        em.close();
        emf.close();

krijg ik deze error
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Caused by: java.lang.NullPointerException
    at oracle.sql.Datum.equals(Datum.java:65)
    at oracle.toplink.essentials.mappings.foundation.AbstractDirectMapping.compareObjects(AbstractDirectMapping.java:286)
    at oracle.toplink.essentials.mappings.foundation.AbstractDirectMapping.compareForChange(AbstractDirectMapping.java:219)
    at oracle.toplink.essentials.descriptors.changetracking.DeferredChangeDetectionPolicy.createObjectChangeSetThroughComparison(DeferredChangeDetectionPolicy.java:124)
    at oracle.toplink.essentials.descriptors.changetracking.DeferredChangeDetectionPolicy.createObjectChangeSet(DeferredChangeDetectionPolicy.java:103)
    at oracle.toplink.essentials.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChanges(DeferredChangeDetectionPolicy.java:81)
    at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:476)
    at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1108)
    at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:82)
    at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:842)
    at oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionImpl.commit(EntityTransactionImpl.java:90)
    ... 2 more


De equals methode krijgt dus geen 2de object meer zich mee te vergelijken. Klopt het als ik zeg dat JPA de equals methode gebruikt? Is er hier een oplossing voor, om de XML uit de database te halen, aan te passen en terug op te slaan in de database?