Grails 调试Bootstrap.groovy的最佳方法是什么?

Grails 调试Bootstrap.groovy的最佳方法是什么?,grails,bootstrapping,Grails,Bootstrapping,我正在将一些数据插入数据库,但有些对象没有插入,即使我看不到任何验证错误。使用stacktrace或sql出错的最佳方法是什么,这样我就可以找出错误所在 例如,我做了,新的XXXXX(属性:“blah”).save(flush:true) 我在启动时没有看到错误(grails run app),但也没有看到数据。我确实看到了我的许多对象的数据,因此我确信这与我的对象、验证甚至关联有关,但我需要一种简单的方法在日志/控制台中查看问题 我相信这很容易,但首先,我会围绕您的域编写一个单元测试。如果这似

我正在将一些数据插入数据库,但有些对象没有插入,即使我看不到任何验证错误。使用stacktrace或sql出错的最佳方法是什么,这样我就可以找出错误所在

例如,我做了,新的XXXXX(属性:“blah”).save(flush:true)

我在启动时没有看到错误(grails run app),但也没有看到数据。我确实看到了我的许多对象的数据,因此我确信这与我的对象、验证甚至关联有关,但我需要一种简单的方法在日志/控制台中查看问题


我相信这很容易,但首先,我会围绕您的域编写一个单元测试。如果这似乎可行,但在引导过程中仍然存在问题,那么每次保存时,我都会检查域中是否存在错误

def xxxxx = new XXXXX(...)
xxxxx.save(flush:true)
def errors = xxxxx.errors
然后,我将在其中放置一个断点,以便检查errors对象。否则,您可以在errors对象中打印,并通常从中收集足够的信息以了解发生了什么。

我建议如果在引导过程中save()失败,则让save()引发异常,因为验证错误将由您的代码而不是用户输入引起

new Xxxxx(property: "blah").save(failOnError: true)
异常将包含一个非常冗长的文本块,但请检查第一行,它将如下所示:

grails.validation.ValidationException: 过程中发生验证错误 save():

对象中的字段错误 字段上的“mypackage.Xxxxx” “myProperty”:拒绝的值[null]


应该是
defxxxxx新的xxxxx(…);xxxxx.保存(刷新:真);def errors=xxxxx.errors
因为save()如果不验证EYEP,则返回null,这是因为它很匆忙。固定的。谢谢。一组健壮的单元测试在很大程度上可以消除这种需求。