@Transactional アノテーションを使用したトランザクションのロールバックで問題に直面しています。
backingbean、service、および dao クラスに次のメソッドがあります。
public class ItemBackingBean {
public void saveUpdate() {
try {
ItemService.executeTransaction();
}
catch(Exception e) {
}
}
}
public class ItemService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void executeTransaction() {
deleteItem();
createOrder();
}
private void deleteItem() {
persist();
}
private void createOrder() {
persist();
}
private void persist() {
JpaDaoImpl.persist(object);
JpaDaoImpl.update(object);
}
}
public class JpaDaoImpl implements JpaDao {
@Transactional(readOnly = true)
public persist(Object object) {
getEm().persist(object);
}
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public void update(Object object) {
getEm().merge(object);
}
@Transactional(readOnly = true)
public void remove(Object object) {
getEm().remove(object);
}
}
createOrder() で何らかの例外が発生した場合、すべてのトランザクションはロールバックされるはずですが、発生していません。誰でも問題を教えてもらえますか?
JpaDaoImpl.java での @Transactional の影響は何ですか? persist() メソッドと update() メソッドの radOnly 値は異なります。この Dao はプロジェクトの既存のコードであり、変更したくありません。誰でも助けることができますか?
よろしく、バンドゥ