¿Cómo tengo el siguiente código en mi aplicación no ejb. El código funcionaUn administrador de la entidad JTA no puede usar getTransaction()
@Override
public void saveItems(Collection<T> items) {
synchronized (em) {
EntityTransaction tx = em.getTransaction();
try {
tx.begin();
for (T item : items) {
saveItem_((Class<T>) null, item);
}
tx.commit();
} finally {
if (tx.isActive()) {
tx.rollback();
}
}
}
}
En una nueva aplicación que estoy usando EJB3 + JSF y me gustaría volver a utilizar la biblioteca que contiene el código de seguridad. Mi unidad de peristence para la nueva aplicación es el siguiente:
<persistence-unit name="myApp" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>MySQLConnection</jta-data-source>
</persistence-unit>
Mi nueva aplicación de una excepción cuando llega a esta línea:
EntityTransaction tx = em.getTransaction();
la excepción es:
A JTA EntityManager cannot use getTransaction()
Lo cual es bastante claro. La pregunta es cómo voy a convertir mi código para que el contenedor administre las transacciones. Es de suponer que mis métodos de frijol deben ser anotados apropiadamente ... La pregunta es ¿cómo?
¿cuál es la solución aquí? – rtcarlson
@rtcarlson Por qué downvoted y no lo he borrado en mi publicación para usar la interfaz 'UserTransaction'. –
@downvoter Si no puede explicar ni comprender, no menosprecie sin razón. –