Bạn có thể gọi phương thức yêu cầu giao dịch bên trong phương thức không?Sử dụng @TransactionAttribute (giá trị = TransactionAttributeType.NEVER) trên phương thức
@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
}
Thuộc tính .NEVER cho biết sẽ đảm bảo các phương pháp không chạy bên trong một giao dịch nhưng những gì về cuộc gọi đến các phương pháp khác bên trong phương pháp mà
Bạn có thể áp dụng chú thích @TransactionAttribute ở cấp lớp để chỉ định thuộc tính giao tác mặc định cho tất cả các phương thức kinh doanh của bean doanh nghiệp. Bạn có thể áp dụng chú thích này ở cấp phương thức để xác định thuộc tính giao tác cho phương thức đó. Áp dụng chú thích ở cấp phương thức sẽ ghi đè chú thích cấp lớp (nếu có) cho phương thức đó. – Luke