我正在关注一个基于 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/

10-16 18:29