我正尝试在this guide的帮助下在grails控制台中创建一个新的域对象。 据控制台输出的新对象被创建:使用grails控制台创建的新域对象在dbconsole中不可见
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 表BOOK存在,当我与JDBC URL的开发环境连接,如发现可见DataSource.groovy中:
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年7月28日)
Found [this](http://stackoverflow.com/questions/2040055/grails-shell-not-seeing-domain-objects)它建议包装保存在交易? –
@tim_yates在你引用的问题中,问题似乎是不能在shell/console中创建对象而不使用事务包装。我的问题是不同的,因为该对象在shell中创建的很好,list()返回该类型的新创建的对象,但该对象在H2 dbconsole中不可见。无论如何,我尝试了事务包装,但结果是一样的。 – nkr1pt