1

我无法将我的内置数据库设置为“ update”。当我离开应用程序时它总是被清除,好像还在' create-drop'上。

知道我使用的是 MySQL 数据库可能很有用,并恢复为内置数据库以便能够与一些不知道如何设置 SQL 数据库或 Tomcat 服务器的朋友分享项目。

这是我的DataSource.groovy文件:

dataSource {
    pooled = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:mem:myAppDevDb;MVCC=TRUE"
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:mem:myAppTestDb;MVCC=TRUE"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:h2:myAppProdDb;MVCC=TRUE"
            pooled = true
            properties {
                maxActive = -1
                minEvictableIdleTimeMillis=1800000
                timeBetweenEvictionRunsMillis=1800000
                numTestsPerEvictionRun=3
                testOnBorrow=true
                testWhileIdle=true
                testOnReturn=true
                validationQuery="SELECT 1"
            }
        }
    }
}

非常感谢任何帮助。提前致谢。

4

1 回答 1

4

问题是您的数据源被配置为内存数据源,因此当 jvm 退出时它被丢弃。如果您将 H2 URL 配置为使用文件,则应该能够保存数据库。

development {
    dataSource {
        dbCreate = "update"
        url = "jdbc:h2:somefile:myAppDevDb;MVCC=TRUE"
    }
}
于 2012-04-07T15:24:55.687 回答