¿Puede llamar a un método que requiere una transacción dentro de un método que no lo hace?Usando @TransactionAttribute (value = TransactionAttributeType.NEVER) en un método
@TransactionAttribute(value = TransactionAttributeType.NEVER)
public void DoSomething(final List<Item> items) {
//can you call a method that requires a transaction here ?
for (Item i : items) {
methodCall(item);
}
@TransactionAttribute(value = TransactionAttributeType.REQUIRES_NEW)
public void methodCall(final Item item) {
// access lazily loaded item properties
item.getSalesOrder();
item.getAllocation();
//throws org.hibernate.LazyInitializationException: could not initialize proxy - no Session
}
El atributo .Nunca dice que garantizará el método no se ejecuta dentro de una transacción, pero ¿qué pasa con las llamadas a otros métodos dentro de ese método
Puede aplicar la anotación @TransactionAttribute en el nivel de clase para especificar el atributo de transacción predeterminado para todos los métodos de negocio del enterprise bean. Puede aplicar esta anotación en el nivel de método para especificar el atributo de transacción para ese método. La aplicación de la anotación en el nivel de método anula la anotación de nivel de clase (si corresponde) para ese método. – Luke