应用程序结束后具有 Hibernate 的 HSQLDB 不保存记录
Posted
技术标签:
【中文标题】应用程序结束后具有 Hibernate 的 HSQLDB 不保存记录【英文标题】:HSQLDB with Hibernate not saving records after application end 【发布时间】:2012-05-09 16:59:33 【问题描述】:我有一个示例应用程序,它加载 2 条记录 ro 数据库,然后从数据库中获取所有记录并打印每条记录的信息。
我的问题如下:当我运行程序时,它只获取在此运行时插入的记录,而不是之前插入的记录,另外,当我用 SQirrel 打开数据库时,没有这样的数据库。
这是我的 Hibernate 配置:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hibertest</property>
<property name="connection.username">sk</property>
<property name="connection.password">0000</property>
<property name="show_sql">true</property>
<property name="current_session_context_class">thread</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="models.Work" />
</session-factory>
</hibernate-configuration>
我做错了什么?
【问题讨论】:
【参考方案1】:我对 HSQLDB 没有经验,但请尝试以下 URL:
<property name="connection.url">jdbc:hsqldb:file:hibertest;shutdown=true</property>
请参阅:Connection URL documentation。
【讨论】:
这是同一 URL(文件数据库)的另一种形式。有关在 URL 上使用的其他属性,请参阅此内容。***.com/questions/10238399/… @Tomasz 请将持久性所需的额外属性添加到您的答案中。请参阅我发布的链接。 @fredt:请随时编辑我的答案。你有足够的回购来做到这一点。或者创建另一个答案。【参考方案2】:我相信 hsqldb 的默认配置是不为创建的表在磁盘上保存数据。请查看 hsqldb 文档以了解如何更改此行为并使表持久化。
http://hsqldb.org/doc/guide/guide.html#sgc_persist_tables
【讨论】:
【参考方案3】:所有提供的答案都对我没有帮助。 目前我使用 HSQLDB-2.3.2 和 hibernate-core-3.5.6 和 annotations-3.2.0
除了 Tomasz 的回答,我还需要手动编辑数据库脚本文件设置:
SET WRITE_DELAY 0
【讨论】:
【参考方案4】:您可以通过执行以下操作使用 HSQL 持久化数据, 1.
Connection c = DriverManager.getConnection("jdbc:hsqldb:file:/opt/db/testdb", "SA", "");
“/opt/db/testdb”这里是磁盘中的数据库位置。
2.CREATE **TEXT** TABLE <tablename> (<column definition> [<constraint definition>])
3. 为表格分配来源SET TABLE mytable SOURCE "myfile;fs=|"
参考:http://hsqldb.org/doc/2.0/guide/texttables-chapt.html
我的 Github 存储库显示示例 https://github.com/Ayyamperumal/HSQL/tree/master/SampleHSQLdb
您可以使用 Eclipse 中的“数据库开发”透视图来查看数据。 (提供 hsql jar 作为驱动)或者从 hsqldb-*.jar 中执行 org.hsqldb.util.DatabaseManager 以获取查看数据的 GUI。
【讨论】:
以上是关于应用程序结束后具有 Hibernate 的 HSQLDB 不保存记录的主要内容,如果未能解决你的问题,请参考以下文章