我有以下代碼:我應該拋出一個EJBException異常,以防止實體創建
JSF託管Bean:
@ManagedBean(name = "purchaseView")
@ViewScoped
public class PurchaseView implements Serializable {
@EJB
private PurchaseService service;
private Order order;
// Getter/Setters here
public void checkoutOrder() {
// .. some checks for null here, then call service
service.checkout(order);
}
}
服務:
@Stateless
public class BuyVoucherService {
@EJB
private OrderBean orderBean;
@EJB
private ProductBean productBean;
public boolean checkout(Order order) {
orderBean.create(order);
for(int i=0;i<order.getQuantity();i++) {
Product product = new Product();
if(someCondition) {
// don't save anything and
return false;
}
// .. some setter here
product.setOrder(order);
productBean.create(product);
}
return true;
}
的一個ProductBean和orderBean是簡單的JPA EJB與EntityManager和CRUD操作(由Netbeans生成..)。 在上面的服務中,當服務返回時,事情會在數據庫中持久化。在這種情況下什麼是錯的(someCondition
== TRUE以上),如果我返回false的orderBean.save(順序)仍然會堅持在數據庫的順序,我不希望出現這種情況。
拋出一個EJBException異常和捕捉它在ManagedBean最好的選擇?
什麼是OrderBean中create()的事務屬性,它是默認的。 –
是的,我沒有設置任何具體的事務屬性 – JScoobyCed