public abstract class GenericDAOImpl<E> implements GenericDAO<E> {
@PersistenceContext(unitName="transbrDS")
private EntityManager entityManager;
public Session getSession() {
return (Session) entityManager.getDelegate();
}
public void save(E pojo) {
getSession().saveOrUpdate(pojo);
}
........
}
public void addCarreta(Carreta carreta) {
save(carreta);
}
public void addCarreta(Carreta carreta) {
carretaDAO.addCarreta(carreta);
}
public void finishAddCarreta() {
Carreta cta = carretaService.getByDescricao(carreta.getDescricao(), carreta.getPlaca());
if (carreta.getCodigo() == null && cta != null) {
FacesContext.getCurrentInstance().addMessage(null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro:", "Descrição ou Placa já cadastrada"));
} else if (carreta.getDescricao() != null && carreta.getPlaca() != null
&& (carreta.getDescricao().isEmpty() || carreta.getPlaca().isEmpty())) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro:", "Preencha os campos"));
} else {
carretaService.addCarreta(carreta);
doLimparCarreta();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso:", "Registro salvo com sucesso"));
}
}
<p:commandButton value="#{msgs.cbtGravar}" action="#{carretaMBean.finishAddCarreta}"
image="ui-icon-disk" update="msgs, dtCarreta, pgSalvar"
rendered="#{!carretaMBean.cbtSalvar}"/>
ARJUNA16029: SynchronizationImple.afterCompletion - failed for org.jboss.as.jpa.transaction.TransactionUtil$SessionSynchronization@152701c with exception: org.hibernate.SessionException: Session was already closed
at org.hibernate.internal.SessionImpl.close(SessionImpl.java:269) [hibernate-core-4.0.0.Beta5.jar:4.0.0.Beta5]
at org.hibernate.ejb.EntityManagerImpl.close(EntityManagerImpl.java:152) [hibernate-entitymanager-4.0.0.Beta5.jar:4.0.0.Beta5]
at org.jboss.as.jpa.transaction.TransactionUtil$SessionSynchronization.afterCompletion(TransactionUtil.java:229) [jboss-as-jpa-7.0.1.Final.jar:7.0.1.Final]
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.afterCompletion(SynchronizationImple.java:117)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.afterCompletion(TwoPhaseCoordinator.java:403)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:104)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:159)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1159)
at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:119)
at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)
at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:92)
at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:265)
at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.required(CMTTxInterceptor.java:359)
at org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invoke(CMTTxInterceptor.java:219)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:35)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:287) [jboss-invocation-1.1.0.Final.jar:1.1.0.Final]
at org.jboss.as.ejb3.component.session.SessionInvocationContextInterceptor.processInvocation(SessionInvocationContextInterceptor.java:71)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:287) [jboss-invocation-1.1.0.Final.jar:1.1.0.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.0.Final.jar:1.1.0.Final]
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:146)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:287) [jboss-invocation-1.1.0.Final.jar:1.1.0.Final]
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.0.Final.jar:1.1.0.Final]
at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:76)
at br.com.transbr.service.carreta.CarretaService$$$view1.getByDescricao(Unknown Source) [classes:]
at br.com.transbr.managedbean.carreta.CarretaMBean.finishAddCarreta(CarretaMBean.java:113) [classes:]
......
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
.......
Caused by: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
.......
Caused by: javax.transaction.RollbackException: Could not commit transaction.
.........
Caused by: javax.persistence.OptimisticLockException: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
........
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
.........
Caused by: javax.faces.el.EvaluationException: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
.......
Caused by: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
........
javax.faces.FacesException: #{carretaMBean.finishAddCarreta}: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back
Alguém tem alguma ideia do que pode ser?