を防ぐために持たない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(order)はデータベース内での順序を維持しますが、私はそれを望んでいません。
EJBExceptionがスローされ、ManagedBeanで最良のオプションをキャッチしていますか?
OrderBeanのcreate()のトランザクション属性は、デフォルトですか? –
はい、特定のトランザクション属性を設定していません – JScoobyCed