प्रारंभिक java.sql.SQLException: IJ031040
हमारे आयात के दौरान एक विशिष्ट परिणाम से संबंधित प्रतीत होता है। बाद में इसे दूसरे java.sql.SQLException
. से बदल दिया गया है जो प्रबंधित लेनदेन के लिए रोलबैक को मना करता है। लेकिन मैं अंततः मूल SQL कथन जारी करके समस्या का समाधान कर सकता था:
// Mark the current state as SAVEPOINT...
Session session = this.em.unwrap(Session.class);
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
connection.prepareStatement("SAVEPOINT TRY_POSSIBILITY").executeUpdate();
}
});
//
// Do all the risky changes... verify... decide...
//
// Rollback to SAVEPOINT if necessary!
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
connection.prepareStatement("ROLLBACK TO SAVEPOINT TRY_POSSIBILITY").executeUpdate();
}
});
यह बड़े लेनदेन में "नेस्टेड लेनदेन" की अनुमति देता है और मेरी समस्याओं का समाधान करता है।