0
即使我在update()方法拋出空指針異常,以下代碼也無助於回滾。每次運行代碼時,它都會將值插入數據庫中。請幫助我如何在update()方法拋出空指針時回滾事務。我在代碼中丟失了什麼嗎?CMT回滾:如何回滾事務
@TransactionManagement(value = TransactionManagementType.CONTAINER)
public class Bean implements RemoteIF {
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void insertIntoDb() {
insert();
update();
}
private Integer update() {
val=0;
try {
Connection con = DbConn.getConnection();
Statement st = con.createStatement();
val1 = st.executeUpdate("INSERT INTO tab VALUES('ab')");
st.close();
throw new NullPointerException();
} catch (Exception e) {
System.out.println(e);
}
return val;
}
private Integer insert() {
int val = 0;
try {
Connection con = DbConn.getConnection();
Statement st = con.createStatement();
val = st.executeUpdate("INSERT INTO tab VALUES('bnm')");
st.close();
} catch (Exception e) {
System.out.println(e);
}
return val;
}
}
你爲什麼不使用JPA?另請參閱在線教程http://docs.oracle.com/javaee/6/tutorial/doc/以瞭解有關EJB中的事務傳播,回滾等的更多信息 – 2012-01-16 15:24:57