我正在关注一个基于 Grails 2.* 的书籍示例(Grails in Action 2nd edition),但我使用的是新的 Grails 3.0.1。
当我创建一个如下所示的域类时:
package qotd
class Quote {
String content
String author
Date created = new Date()
}
每当我尝试通过 groovy 控制台与数据库交互时,都会抛出异常。
org.springframework.dao.DataAccessResourceFailureException: Could not obtain current Hibernate Session;
Caused by: org.hibernate.HibernateException: No Session found for current thread
我试图将@Transactional 添加到域类,并切换到较低的 JDK 版本 (7),但它们都不起作用。
我也用 Grails 3.0 测试过,结果是一样的。
如果我降级到 Grails 2.5.0,它会起作用,所以它是 Grails 3.* 问题。 Gradle 可能是问题所在。
最佳答案
我将所有内容都封装在 Grails 3 的事务中
qotd.Quote.withTransaction {
new qotd.Quote(author: 'Larry Wall',
content: 'There is more than one method to our madness.').save()
}
关于Grails 3.0.1 和 Hibernate session 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30442995/