我对此很新。我正在尝试使用hsqldb和hibernate配置net-beans Maven项目。我已经设置了数据库,我可以将一些数据保存到数据库中。我正在使用文件模式。这是我的连接网址
"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();
根据我的理解,bit应该防止在每次创建时删除表,因为我使用if-else语句来创建if如果不存在则更新它。
这是mydb.log开始的方式
/*C4*/SET SCHEMA PUBLIC
drop table FinPlan if exists
drop table PersonalAssets if exists
drop table TB_UNIQUEID if exists
我错过了什么? 任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:2)
hibernate.hbm2ddl.auto = create将在每次执行时自动重新创建表。既然你将find设置为false,那么hibernate.hbm2ddl.auto将永远是“创建”