0

ドメインクラスを保存するときに grails 挿入フラグを使用する利点は何ですか?

以下に例を示します。ドメイン オブジェクト FooBar があるとします。

FooBar foo = FooBar.find("foo")?: new FooBar(id:"foo")

foo.bar = "bar"

foo.save()

次のようなことをもっとしたほうがよいでしょうか。

boolean insertFlag
FooBar foo = FooBar.find("foo")

if(foo == null){
   insertFlag = false
}else {
   foo = new FooBar(id:"foo")
   insertFlag = true
}

foo.bar = "bar"

foo.save(insert: insertFlag)

挿入フラグの節が無い方がセーブが何とかなるかなと思っていました。

4

1 に答える 1

2

insertドメインクラスsaveの IDが. その場合、はユーザーが割り当てる必要があります。generatorassignedid

insertこれは、記録したいのか、単に記録したいのかを hibernate に通知する方法ですupdate

class FoofBar{
    String bar
    static mapping = {
        id generator: 'assigned'
    }
}

def fooBar = new FooBar(bar: 'foo')
fooBar.id = 100
fooBar.save() //inserts a record with id = 100

def secondFooBar = FooBar.get(100)
secondFooBar.id = 200
//want to insert as a new row instead of updating the old one.
//This forces hibernate to use the new assigned id
fooBar.save(insert: true) 

これではっきりします。

于 2013-06-21T17:57:02.170 に答える