私たちが知っているように、このメソッドにオブジェクトを渡すと、Hibernate
非常に優れた機能SaveOrUpdateupdate
があり、データがデータベースに追加されるか、新しいレコードが追加されることがわかります。この機能は、JOOQ
または私のコードでこれを処理する必要がありますか?
質問する
1466 次
2 に答える
4
jOOQも同じです。レコードの主キーを変更するとが使用されます。INSERT
それ以外の場合は が使用されますUPDATE
。
そのままで、データベースからレコードを読み取ると、呼び出すと期待どおりstore()
にトリガーUPDATE
されます。新しいレコードを作成すると、INSERT
ed になります。
2.6 では、レコードを複製してから jOOQ に更新を依頼するのは少し難しくなっています (複製すると新しいインスタンスに主キーが設定されるため、"new" -> insert とマークされるため)。
于 2013-11-15T10:33:44.473 に答える
1
データベースからレコードを読み取って record.store() を呼び出すと、休止状態の saveOrUpdate メソッドと同じ動作が得られ、完全に機能します!
ただし、ほとんどの場合、データベースからレコードを読み取ることはありません。たとえば、コントローラーまたはビューからレコードを受け取ります。この場合、メソッド record.store() は更新されず、持っていても常に挿入されます。 IDを設定しました。
今のところ、レコード ID でチェックして、独自の saveOrUpdate を実装しています。
public int saveOrUpdate(Record record) {
if(record.getId() != null) {
return record.update();
}
return record.store();
}
于 2015-08-12T19:34:17.253 に答える