3

次のJPAエンティティがあります

@SQLDelete(sql="UPDATE service SET date_deletion =  CURRENT_DATE() WHERE id = ?")
@Where(clause="date_deletion IS NULL ")
public class Service {
...
}

作業を選択すると、date_deletion が通知されていないすべての要素が表示されますが、削除しようとすると....

16:38:26,836  DEBUG SQL:111 - UPDATE service SET date_deletion =  CURRENT_DATE() WHERE id = ?
16:38:26,836  DEBUG AbstractBatcher:418 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
16:38:26,836  DEBUG JDBCExceptionReporter:225 - could not delete: [com.foo.domain.Service#1] [UPDATE service SET date_deletion =  CURRENT_DATE() WHERE id = ?]
java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1).

SQL のどこが間違っていますか? CURRENT_DATE() をパラメーターとして処理し、1 ではなく 2 つのパラメーターを期待しようとしているように見えます...

4

1 に答える 1

6

修理済み。パラメータとして送信される「バージョン」フィールドを内部的に処理するSpringRooを使用していますが、正しいアノテーションは次のとおりです。

@SQLDelete(sql="UPDATE service SET date_deletion=CURRENT_DATE WHERE id=? and version=? ")
@Where(clause="date_deletion IS NULL ")
public class Service {
...
于 2013-01-21T17:30:18.970 に答える