gpt4 book ai didi

grails - 从Excel文件导入后出现多个GORM ValidationException

转载 作者:行者123 更新时间:2023-12-02 15:41:07 25 4
gpt4 key购买 nike

我正在研究错误。我有一个导入到应用程序中的excel文件。
该文件包含有关核心域对象的信息(Zoo,请参见下文)。每行都有两个单元格,名称的字符串值和动物数量的整数值。

如果我在此excel文件中有一个无效字段,它将显示错误消息,例如“单元格Y的X列错误。值是“someValue”无效”。假设我们有一个250行的excel文件。如果在第200行上存在无效的字段错误,则之后的每一行都会引发以下错误

Validation error whilst flushing entity [com.rolotec.ost.Zoo]:
- Field error in object 'com.rolotec.ost.Zoo' on field 'ceo': rejected value [null]

如果我在数据库中查找,则在CEO字段上对象不是null。

这里是域对象。
class Zoo{   
String name;
int animalsInTheZoo;
CEO ceo;
hasMany=[ zooEnclosures : ZooEnclosures]
constraints=[//some constraints]
}

class CEO{
Date ceoTillDate;
Person person;
constraints=[//some constraints]
}

class Person{
String name;
int age;
constraints=[//some constraints]
}

这是导入服务
class ImportService{

importExcel(){

String errorMsg="";

Zoo.withTransaction { status->
try{

//some other operations
for(int rowNum = excelFile.firstRow; rowNum<=excelFile.lastRow; rowNum++) {
try {
importRow(row);
} catch (Exception e) {
//doSomething
}
} //end for-loop
if (errorMsg != "") {
status.setRollback();
}
} catch(Exception e){
//doSomething with e
status.setRollback();
}

}
}

importRow(Row row){
String name = row.getCell(1).stringCellValue;
Zoo.findAllByName(name).each{
try{
//reads every cell in Excel data and validates the field
it.save() //error occures here in the validation
} catch(Exception e){
//doSomething with e
}
}
}

如果我检查对象,则它将具有it.ceo.name的值,但其余部分在it.ceo内部为空。也将是it.ceo.person = null。在数据库中,所有属性的值都存在。

编辑:如果excel文件中没有无效字段,则没有ValidationException。一切都会好好的进口。

编辑2:在importExcel()方法内添加了for循环。

最佳答案

问题是,Zoo.withTransaction闭包内部是一个for循环,该循环遍历excel文件中的所有行。对于解决方案,我们将.withTransaction移到了for循环内,问题就消失了。

ImportService中的代码现在看起来像这样:

  importExcel(){

String errorMsg="";
//some operations
for(int rowNum = excelFile.firstRow; rowNum<=excelFile.lastRow; rowNum++){
Zoo.withTransaction{status ->
//some operations
try{
importRow(row)
}
catch(Exception e){
//do something with exception
status.setRollbackOnly()
}
}
}

}

关于grails - 从Excel文件导入后出现多个GORM ValidationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60373416/

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