gpt4 book ai didi

grails - 如何在 Grails 中保存或更新?

转载 作者:行者123 更新时间:2023-12-04 16:30:08 25 4
gpt4 key购买 nike

如果记录不存在,则应插入。
如果记录存在,Grails 应该进行更新。

new MyEntity(attr1:'val1', attr2:'val2').saveOrUpdate()????

编辑
我已根据您的建议修改了我的代码:
List<NutDto> res = np.parseNutData(file.inputStream);
for(NutDto cellValue : res){
def nutInstance = NutData.get(cellValue.getIdd())
System.out.println("nutInstance = " + nutInstance);
if(nutInstance){
System.out.println("Exists : " + nutInstance);
nutInstance.foo=cellValue.getFoo()
nutInstance.bar=cellValue.getBar()
}
else{
System.out.println("Not Exists")
nutInstance = new NutData(idd:cellValue.getIdd(),
foo:cellValue.getFoo(),
bar:cellValue.getBar())
}

def saveres = nutInstance.save(failOnError: true);
println("saveres = " + saveres);
nutInstance.errors.each { println it }
}

还是不更新。它的 throw 错误。
Field error in object 'sps.NutData' on field 'idd': rejected value [123456-1234]; codes [sps.NutData.idd.unique.error.sps.NutData.idd,sps.NutData.idd.unique.error.idd,sps.NutData.idd.unique.error.java.lang.String,sps.NutData.idd.unique.error,nutData.idd.unique.error.sps.NutData.idd,nutData.idd.unique.error.idd,nutData.idd.unique.error.java.lang.String,nutData.idd.unique.error,sps.NutData.idd.unique.sps.NutData.idd,sps.NutData.idd.unique.idd,sps.NutData.idd.unique.java.lang.String,sps.NutData.idd.unique,nutData.idd.unique.sps.NutData.idd,nutData.idd.unique.idd,nutData.idd.unique.java.lang.String,nutData.idd.unique,unique.sps.NutData.idd,unique.idd,unique.java.lang.String,unique]; arguments [idd,class sps.NutData,123456-1234]; default message [Property [{0}] of class [{1}] with value [{2}] must be unique]

值没有得到更新。

编辑 2
package sps    
class NutData {

String idd
String foo
String bar


static constraints = {
idd(blank:false, unique:true)
}

static mapping = {
table 'M_NUT_DATA'
version false
id generator: 'assigned', name: "idd", type: 'string'
foo column:'FOO_COL'
bar column:'BAR_COL'
}

String toString(){
return idd + '_' + foo
}
}

最佳答案

动态查找器 正是用于此目的。

使用 findOrSaveBy* 您的第一个示例代码将这样编写:

def entity = MyEntity.findOrSaveByAttr1AndAttr2( val1, val2 )

文档: http://grails.org/doc/latest/ref/Domain%20Classes/findOrSaveBy.html

关于grails - 如何在 Grails 中保存或更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5787300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com