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如果您将域类的 id 设置为. inside save,则非常有用。在这种情况下,必须由用户分配。generatorassignedid

这是一种通知 hibernate 是要insert记录还是只想记录的方法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 回答