3在grails中获取对象时未保存的瞬态实例
获取对象时,我得到一个未保存的瞬态实例异常 代码如下:3在grails中获取对象时未保存的瞬态实例,grails,Grails,获取对象时,我得到一个未保存的瞬态实例异常 代码如下: String string = "name1|name2" string.split("[|]").each { if (it) { println it Product p = Product.findByName(it.toUpper
String string = "name1|name2"
string.split("[|]").each {
if (it) {
println it
Product p = Product.findByName(it.toUpperCase()).save()
if(p) {
Components c = new Components(product: p).save(failOnError: true, flush: true)
st.addToComponents(c)
}
}
}
这是个例外
| Error org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: Product; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: Product
我不明白为什么得到一个物体会导致这种情况。我已检查该对象不在数据库中。但我的FailOnError:true在保存时不会给出任何错误
Product p = Product.findByName(it.toUpperCase()).save()
毫无意义。尝试删除并保存:
另外,在保存该实例之前,请尝试执行c.validate。它可能有验证错误能否添加更多代码?此代码是在控制器中还是在服务中执行?这是怎么一回事?您正在迭代域对象列表吗?最初用于测试的域对象列表没有、保存并出现相同的错误。请在保存之前尝试验证您的c实例。hibernate会话没有将批处理刷新到数据库似乎有问题。这使得这篇文章显得多余。所以我打开了另一个线程。
Product p = Product.findByName(it.toUpperCase())