2011-06-20 3 views
0

Grails issue with unique/save/updateに関する別の質問があります。grailsはhibernate updateを呼び出します

コールデフbookInstance.getを避けるためにどのような方法がある(bookList.id [それ])?例えば、私はまだDBに存在するデータを上書きしたいのですが、DBから1を存在ロードしたくないので、私はデフbookInstance =新しいブック()bookInstance.id = XXX bookInstance.save()

を呼び出します

これはうまくいきません。なぜなら、gormは新しいObjectとしてそれを取ります。強制的に更新する方法はありますか?以下のようなhibernateSession.update

答えて

1

は非常に高価であってはならないので、あなたは、おそらく途中で最適化しているインスタンスをロード呼び出します。しかし、executeUpdateを使用すると、データを最初に取得せずに更新することができます。あなたBookクラスは、次のようになりますたとえば:私はインスタンスをロードしたくない理由がある

Book.executeUpdate(
    'update Book b set b.author=:author, b.title=:title where b.id=:id', 
    [author: params.author, title: params.author, id: params.id]) 
+0

:1対があるとき

class Book { String author String title } 

あなたはこのようにそれを更新することができますドメインオブジェクト内の多くのマッピングがDBからロードされている場合は、***。properties = paramsを呼び出す前にすべての1対多データを消去する必要があります。チームの共通インフラストラクチャを構築したいので、不要なコードを削除したいと考えています。あなたの提案はgreateですが、より多くのコードを導入する可能性があります。 – Xilang

関連する問題