我经常做错事并在 Grails 中获得未保存的瞬态实例异常。我无法粘贴代码,如果我粘贴了,您可能只会告诉我永远停止编程。但这是我想要一些帮助的一般情况:
我打电话给instanceOfMyComplicatedDomainClass.save(flush: true, failOnError: true)
grails/hibernate 给了我无处不在的:
object references an unsaved transient instance - save the transient instance before flushing: soexample.SomeOtherDomainClass
我能做什么(除了理解我自己的代码)来查看哪个属性是问题,因为我有几个具有相同的类?.save()
我想要一个我可以在它之前调用的方法println
//log
无论导致所有愤怒的属性的名称是什么。让我举个例子:
class MyComplicatedDomainClass {
SomeOtherDomainClass dataContents
SomeOtherDomainClass moreDataContents
static constraints = {
dataContents(nullable:true)
moreDataContents(nullable:true)
}
}
class SomeOtherDomainClass {
String randomData
}
...
def someRandomMethodAnywhere(){
def newComplicated = new MyComplicatedDomainClass()
def imUnsaved = new SomeOtherDomainClass(randomData:'lalala')
def imOK = new SomeOtherDomainClass(randomData:'lalala2').save()
newComplicated.dataContents = imUnsaved
newComplicated.moreDataContents = imOK
//At this point newComplicated references an unsaved transient, "imUnsaved". If I try to save newComplicated it will fail.
def badPropertyList = findUnsavedTransients(newComplicated)
assert badPropertyList.contains("dataContents") //So findUnsavedTransients method returns a list of the names of the properties referencing the unsaved transients
}
我将如何编写 findUnsavedTransients?Hibernate 中是否已经有任何方法可以做类似的事情?
我在问一些与我的其他问题不同的问题来列出所有未保存的瞬态:获取所有对象的列表 grails 计划神奇地保存
此外,我看到(并已阅读)其他约 15 个“休眠:未保存的瞬态......”问题,我要求提供通用解决方案来查看问题所在,而不是针对我做错的具体解决方案在今天的特定片段中。教人钓鱼……可以这么说。