Transaction does not work
lfelipeas May 27, 2011 4:20 PMI have a method where I create a new transaction to persist some objects. But when it goes to commit it simply does nothing. Passes by.
Here is the code:
@Transactional public void insertWithTransaction(PmnGrupoAssistenciaTecnica grupoAstec, PmnProfissionalUtilizado profUtil, PmnGrupoProfissional grupoPro) { Transaction tx = ((Session) (getEntityManager().getDelegate())).getTransaction(); try { tx.begin(); getEntityManager().persist(grupoAstec); getEntityManager().persist(profUtil); getEntityManager().persist(grupoPro); tx.commit(); } catch(Throwable e) { tx.rollback(); e.printStackTrace(); } }
Here goes my persistence.xml:
<?xml version="1.0" encoding="UTF-8"?> <!-- Persistence deployment descriptor for dev profile --> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <persistence-unit name="BL" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>java:/BLDatasource</jta-data-source> <!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR --> <!-- <jar-file>../../vehicles.jar</jar-file> --> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9iDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="jboss.entity.manager.factory.jndi.name" value="java:/BLEntityManagerFactory"/> </properties> </persistence-unit> </persistence>
And my components.xml:
<?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:bpm="http://jboss.com/products/seam/bpm" xmlns:security="http://jboss.com/products/seam/security" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:web="http://jboss.com/products/seam/web" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:transaction="http://jboss.com/products/seam/transaction" xsi:schemaLocation= "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.2.xsd http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.2.xsd http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.2.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.2.xsd http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.2.xsd"> <component name="DATE_FORMATTER" class="org.domain.bl.converter.DateFormatter" auto-create="true" scope="application" > <property name="timeZone">#{timeZone}</property> </component> <core:init debug="true" jndi-pattern="@jndiPattern@"/> <core:manager concurrent-request-timeout="500" conversation-timeout="120000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid" uri-encoding="ISO-8859-1"/> <!-- Make sure this URL pattern is the same as that used by the Faces Servlet --> <web:hot-deploy-filter url-pattern="*.seam"/> <web:character-encoding-filter override-client="true" encoding="ISO-8859-1"></web:character-encoding-filter> <persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="java:/BLEntityManagerFactory" /> <drools:rule-base name="securityRules"> <drools:rule-files> <value>/security.drl</value> </drools:rule-files> </drools:rule-base> <security:rule-based-permission-resolver security-rules="#{securityRules}"/> <security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/> <event type="org.jboss.seam.security.notLoggedIn"> <action execute="#{redirect.captureCurrentView}"/> </event> <event type="org.jboss.seam.security.loginSuccessful"> <action execute="#{redirect.returnToCapturedView}"/> </event> <event type="org.jboss.seam.exceptionHandled"> <action execute="#{redirect.returnToCapturedView}"/> </event> <mail:mail-session host="localhost" port="25"/> <!-- For use with jBPM pageflow or process management --> <!-- <bpm:jbpm> <bpm:process-definitions></bpm:process-definitions> <bpm:pageflow-definitions></bpm:pageflow-definitions> </bpm:jbpm> --> </components>
Can somebody help me?
Thanks!