2
Transactionalアノテーションで定義された2つの関数AとBがあります。Propagation.REQUIRES_NEWによりLockWaitTimeOutExceptionが発生する
は私が解決してしまった、機能Bおよび問題からPropagation.REQUIRES_NEWを削除
Caused by: java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
にA.
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int A(....){
B();
}
@Transactional(propagation=Propagation.REQUIRES_NEW,value=Constants.READ_WRITE_REQUEST)
public int B(....){
C();
}
@Transactional(value=Constants.READ_WRITE_REQUEST)
public int C(....){
...
}
それは結果ましたからBを呼び出しています。
古い取引がロックを保持していて新しいものが作成されたためですか? これについてのご意見はありますか?