出于日志记录和调试目的,我想将嵌入式/内存中的 HSQL 数据库转储到文件中。模式+数据。我正在使用 spring-framework 和 hibernate。
我都试过了:
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.createSQLQuery("BACKUP DATABASE TO '/tmp/backup.tar.gz' BLOCKING");
transaction.commit();
session.close();
和
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.createSQLQuery("SCRIPT '/tmp/backup-data.sql'");
transaction.commit();
session.close();
两者都无济于事。
没有特殊配置。
hibernate 配置:
<jdbc:embedded-database id="dataSource" type="HSQL">
<jdbc:script location="classpath:spring/batch/database/schema.sql"/>
</jdbc:embedded-database>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="dataSource">
<property name="packagesToScan" value="com.domain.*.model"/>
<property name="hibernateProperties">
<value>
hibernate.format_sql=true
hibernate.dialect=org.hibernate.dialect.HSQLDialect
</value>
</property>
</bean>
我错过了什么,我需要一种不同的方法吗?有可能吗?
最佳答案
您的代码只是创建一个 SQLQuery
的实例并将其丢弃。您没有执行查询。
添加/更改以下内容
SQLQuery query = session.createSQLQuery("BACKUP DATABASE TO '/tmp/backup.tar.gz' BLOCKING");
query.executeUpdate();
这将执行查询。
关于java - 将嵌入式 HSQL 数据库保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213688/