我是新手。我正试图配置一个net-beans Maven项目与hsqldb和hibernate。我已经设置了数据库,我可以保存一些数据到数据库。我正在使用文件模式。这是我的连接url
"jdbc:hsqldb:file:C:/data/findb"
然而,我遇到的问题是我的数据库表将在每次执行时被删除并重新创建全新的。我不希望这种事发生。我想创建表只有一次,并能够更新它之后。
这是我的配置文件的一个片段
boolean found = false;
String URL = "jdbc:hsqldb:file:C:/data/findb";
Configuration cfg = new Configuration();
if (!found) {
cfg.setProperty("hibernate.hbm2ddl.auto", "create");
} else {
cfg.setProperty("hibernate.hbm2ddl.auto", "update");
}
cfg.setProperty("hibernate.connection.driver_class",
"org.hsqldb.jdbcDriver");
cfg.setProperty("hibernate.connection.url", URL);
cfg.setProperty("hibernate.connection.username", "sa");
cfg.setProperty("hibernate.connection.password", "1234");
cfg.setProperty("hibernate.connection.pool_size", "20");
// cfg.setProperty("hibernate.connection.hsqldb.default_table_type",
// "cached");
sessionFactory = cfg.configure().buildSessionFactory();
在我的理解中,这一点应该防止每次创建时删除表,因为我使用if-else语句来创建如果不存在并更新如果存在的话。
mydb.log是这样启动的
/*C4*/SET SCHEMA PUBLIC
drop table FinPlan if exists
drop table PersonalAssets if exists
drop table TB_UNIQUEID if exists
我错过了什么??任何帮助都将不胜感激。
hibernate.hbm2ddl。Auto = create将在每次执行时自动重新创建表。由于您将found设置为false,因此hibernate.hbm2ddl。Auto总是为"create"