我正在使用Hibernate 3和Grails 2.2.5。
我的一个视图中有一个AJAX调用,它应该查找一些数据并提供文本结果。在用于生成文本结果的方法中,我有一个方法调用服务,以将文本结果保存到自己的域。
问题是.save(flush: true)
不会持久存储到数据库中。但是,如果我添加一个Groovy SQL实例并执行.executeInsert()
任何插入,将插入Groovy SQL中的插入并且.save(flush: true)
方法将按预期工作...我已尝试过各种不同的方式,但只要我注释掉.executeInsert("...")
域名类就不会被保留。
我检查了常见问题:验证检出(返回true),我将deepValidate
变为false,我使用了刷新,以防Hibernate试图将插入语句保存到以后的时间。我还在logSql = true
中启用了DataSource.groovy
,当我对.executeInsert("...")
发表评论时,SQL插入语句会被记录,但永远不会持久存在于表中。
- 编辑/ UPDATE -
Hibernate日志的insert语句为:
insert into TextDomain (version, text, ... , id) values (?,?,?,?,?)
问题标记应该在那里吗?对Hibernate不太熟悉,所以我不确定它是否正在执行它的实际SQL语句,或者它是否填充了这些值?
此外,我尝试拨打.save()
的方法是src/groovy
。
编辑/更新 - > TEST:
我将测试设置为控制器中的单个操作。我只是调用了一个服务方法,用textDomain
填充了一些测试值,然后执行了.save()
。在调用控制器操作(即转到网址my-app:8080/test/text
)时,textDomain
会被正确保留。但是,我尝试添加具有实际textDomain实例化的服务和来自其他服务的测试值,它将不会持久...