【发布时间】:2013-10-23 13:06:06
【问题描述】:
我正在尝试在this guide 的帮助下在 grails 控制台中创建一个新的域对象。 根据控制台输出创建新对象:
grails> shell
groovy:000> new foo.Book(title: 'bar').save(failOnError: true, flush: true)
groovy:000> foo.Book : 1
groovy:000> foo.Book.list()
groovy:000> [foo.Book : 1]
但是这个新书实体在 dbconsole 中不可见 当我使用 DataSource.groovy 中的开发环境的 JDBC url 连接时,表 BOOK 出现:
jdbc:h2:mem:devDb;MVCC=TRUE
username: sa
password: <blank>
但选择返回 0 行
DataSource.groovy 配置的相关部分(默认)
dataSource {
pooled = true
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = false
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
// cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
使用控制台而不是 groovy shell 创建实体时,问题仍然存在。
我目前正在使用最新的 grails 版本,即 2.3.1
嵌入式 H2 数据库 vrsion = H2 1.3.173 (2013-07-28)
【问题讨论】:
-
发现 this 建议将保存包装在事务中?
-
@tim_yates 在您提到的问题中,问题似乎是在不使用事务包装的情况下无法在外壳/控制台中创建对象。我的问题不同,因为该对象在 shell 中创建得很好,并且 list() 返回该类型的新创建对象,但该对象在 H2 dbconsole 中不可见。无论如何,我尝试了交易包装,但结果是一样的。
标签: grails groovy grails-orm h2