0

flush:true操作のためにDBを更新しようとしていsave()ます。デバッガーはステータスが更新されたことを示しましたが、このSQLを使用すると

Select * from domain_name where id = 123

私はまだ古いステータスを取得しています。

同じテーブルから読み取るスケジュールされた cron ジョブを実行するために Quartz プラグインを使用しています。

DomainName.withTransaction{ status ->
    try
    {                          
        DomainName name  = DomainName.get(123)  
        name.status = "newstatus"
        name.save(flush:true,failOnError:true)
    }
    catch(Exception rte)
    {   
        log.error "Update failed with error ${rte.message}"
        status.setRollbackOnly()
    }
}

誰かが同様の問題に遭遇しましたか? config.groovy で休止状態ログを有効にしてもエラーはありません

debug 'org.hibernate.SQL' 
    'org.hibernate.transaction' 
4

3 に答える 3

1

この問題が発生しました。更新するインスタンスが動的ファインダーを介して取得されていたことが判明しました。get(id) を使用してインスタンスを取得すると、値がデータベース テーブルに保存されました。

トラブルシューティング中に、SQL ログをオンにしました。行が更新されるはずだったときに、ファインダーを介してインスタンスが取得されたときに更新ステートメントがコンソールに書き込まれませんでした。get(id) を使用して、更新ステートメントがコンソールに書き込まれました。

于 2015-05-29T12:55:30.877 に答える