如何使用 H2 和 JPA 创建数据库备份?



我正在开发一个使用 H2 作为数据库的 JPA 应用程序 我想在数据库运行时创建备份。
以下是持久性的相关部分.xml:

<persistence-unit name="examplePU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>

这个 H2 教程说我必须使用 sql 语句"备份到'备份.zip",但我不太确定如何。 到目前为止我的尝试:

entityManager.createQuery("BACKUP TO 'backup.zip'").executeUpdate();

但它会导致此异常:

java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: BACKUP near line 1, column 1 [BACKUP TO 'backup.zip']

我希望我不必手动将表导出为 JSON 或 CSV。虽然导出部分有效,但导入问题更大,因为我有很多多对多关系。

改为尝试entityManager.createNativeQuery(...)