Hi, Do you have any example of the steps involved in correctly configuring a datasource for this case ?
Best regards, Ivan Frias 2014-12-29 16:03 GMT+00:00 David Jencks <[email protected]>: > It's been a few years….. IIRC the problem here is that your datasource is > not set up correctly. Again IIRC you need both a transactional and a > non-transactional datasource for the persistence-unit. Again IIRC this is > more likely to work if the transactional datasource is XA. The non > transactional datasource must be no-transaction. > > hope this helps > david jencks > > On Dec 29, 2014, at 10:35 AM, ivan frias <[email protected]> wrote: > > > Hi, > > Currently I am developing an application using OpenJPA . I've decide to > use CMP to manage the transactions. > > I am able to insert /edit and delete rows from the database ( through a > configured Datasource ), however, it seems that transaction is only > commited at Geronimo level. If I use the datasource control to execute a > query ( inside the management window on Geronimo ) I get the modified rows, > however If I try it outside the container ( e.g. using Sql Developer ) I > can't see the modifications. > > > > Persistence.xml : > > > > > > <persistence-unit name="FleaCircus" transaction-type="JTA"> > > <description>Flea Circus</description> > > > <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider> > > <jta-data-source>FleaCircusOracleDS</jta-data-source> > > <class>de.carmedialab.db.entities.ApplicationItem</class> > > <class>de.carmedialab.db.entities.FleaResult</class> > > <class>de.carmedialab.db.entities.FleaResultType</class> > > <class>de.carmedialab.db.entities.ItemAttribute</class> > > <class>de.carmedialab.db.entities.ItemGroup</class> > > <class>de.carmedialab.db.entities.ItemType</class> > > <class>de.carmedialab.db.entities.ItemTypeAttribute</class> > > > <class>de.carmedialab.db.entities.ItemTypeOperationAttribute</class> > > <class>de.carmedialab.db.entities.Operation</class> > > > <class>de.carmedialab.db.entities.OperationAttribute</class> > > <class>de.carmedialab.db.entities.OperationType</class> > > <class>de.carmedialab.db.entities.Role</class> > > <class>de.carmedialab.db.entities.UserAccount</class> > > <class>de.carmedialab.db.entities.Measurement</class> > > <class>de.carmedialab.db.entities.MeasurementType</class> > > > <class>de.carmedialab.db.entities.MeasurementAttribute</class> > > > <class>de.carmedialab.db.entities.MeasurementAttributeType</class> > > <class>de.carmedialab.db.entities.Fleet</class> > > > > <properties> > > <property name="openjpa.jdbc.SynchronizeMappings" > value="validate" /> > > <property > > > name="openjpa.Compatibility.CheckDatabaseForCascadePersistToDetachedEntity" > > value="true" /> > > <!--<property name="openjpa.Log" > > value="DefaultLevel=WARN, Runtime=INFO, > Tool=INFO, SQL=TRACE" />--> > > </properties> > > </persistence-unit> > > > > > > TestDaoImpl.java: > > > > > > package de.carmedialab.db.dao; > > > > import java.util.Calendar; > > > > import javax.ejb.Remote; > > import javax.ejb.Stateless; > > import javax.ejb.TransactionAttribute; > > import javax.ejb.TransactionAttributeType; > > import javax.persistence.EntityManager; > > import javax.persistence.PersistenceContext; > > import javax.persistence.PersistenceContextType; > > import javax.persistence.Query; > > > > import de.carmedialab.db.entities.ApplicationItem; > > import de.carmedialab.db.entities.ItemType; > > > > @Stateless > > @Remote(TestDao.class) > > public class TestDaoImpl implements TestDao{ > > > > @PersistenceContext(type=PersistenceContextType.TRANSACTION) > > private EntityManager em; > > > > @Override > > @TransactionAttribute(TransactionAttributeType.REQUIRED) > > public void save() { > > > > try{ > > Query query = em.createQuery("select t from > ItemType t where t.ittTypeName = :name"); > > query.setParameter("name", "Passenger car"); > > ItemType type = (ItemType)query.getSingleResult(); > > > > ApplicationItem itm = new ApplicationItem(); > > itm.setItemType(type); > > itm.setItmIsActive("Y"); > > itm.setItmItemIdentifier("TEST"); > > itm.setItmItemDescription("DESCRIPTION"); > > itm.setItmItemName("NAME"); > > > itm.setItmInsertDate(Calendar.getInstance().getTime()); > > itm.setItmInsertUser("SYSTEM"); > > > > em.persist(itm); > > > > System.out.println("Item Persisted"); > > > > }catch(Exception ex){ > > ex.printStackTrace(); > > } > > } > > > > @Override > > @TransactionAttribute(TransactionAttributeType.REQUIRED) > > public void delete() { > > try{ > > Query query = em.createQuery("select i from > ApplicationItem i where i.itmItemName = :itmName"); > > query.setParameter("itmName", "NAME"); > > ApplicationItem itm = > (ApplicationItem)query.getSingleResult(); > > em.remove(itm); > > System.out.println("Item Deleted"); > > }catch(Exception ex){ > > ex.printStackTrace(); > > } > > } > > } > > > > > > Best regards, > > Ivan Frias > > -- Ivan Frias
