Search code examples
jpaejb-3.0eclipselinkopenejb

Openejb with JPA - able to retrieve but cannot insert into database


I am using openejb as my standalone container to run my unit testcases, in all the test in all the tests i was able to retrieve the values but not able to insert or update. Even if i try entitymanager.merge(obj), it is selecting the value correctly but it is not updating it.

I am new to this , so please help me with this error

thanks in advance

my persistence.xml file

 <persistence-unit name="test"
        transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>java:/OracleDS</jta-data-source>
.....entity classes.....
<properties>
            <property name="eclipselink.target-server" value="JBoss" />
            <property name="eclipselink.target-database" value="Oracle" />
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.parameters" value="true" />
        </properties>
    </persistence-unit>  

my dao method

tp.setname("van");
tp.settype("vehicle");
//entityManager.getTransaction().begin();
entityManager.merge(tp);
//entityManager.getTransaction().commit();

Solution

  • Do the followings for

    Persist new entity:

    Transport tp = new Transport();
    tp.setname("van");
    tp.settype("vehicle");
    entityManager.getTransaction().begin();  
    entityManager.persist(tp);
    entityManager.getTransaction().commit();
    

    Update existing entity:

    Query qry = entityManager.createQuery("Select t from 
                                           Transport t where t.type ='vechicle'");
    List list = qry.getResultList();
    //assume result return single entity
    Transport tp = list.get(0);
    tp.setInspectionDone(new Date()) ;
    entityManager.getTransaction().begin();
    entityManager.merge(tp);
    entityManager.getTransaction().commit();