私たちが知っているように、このメソッドにオブジェクトを渡すと、Hibernate非常に優れた機能SaveOrUpdateupdateがあり、データがデータベースに追加されるか、新しいレコードが追加されることがわかります。この機能は、JOOQまたは私のコードでこれを処理する必要がありますか?  
			
			1466 次
		
2 に答える
            4        
        
		
jOOQも同じです。レコードの主キーを変更するとが使用されます。INSERTそれ以外の場合は が使用されますUPDATE。
そのままで、データベースからレコードを読み取ると、呼び出すと期待どおりstore()にトリガーUPDATEされます。新しいレコードを作成すると、INSERTed になります。
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   に答える