获取grails中的对象时3unsaved瞬态实例

时间:2014-08-20 13:44:39

标签: grails

获取对象时,我得到一个未保存的瞬态实例异常。

以下是代码:

  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在保存时没有给出任何错误。

1 个答案:

答案 0 :(得分:0)

Product p = Product.findByName(it.toUpperCase()).save()

毫无意义。尝试删除save()

Product p = Product.findByName(it.toUpperCase())

此外,请在c.validate()该实例之前尝试save()。它可能有验证错误