Как создать резервную копию базы данных, используя H2 и JPA? - PullRequest
0 голосов
/ 12 февраля 2020

Я занимаюсь разработкой приложения JPA, которое использует H2 в качестве базы данных, и я хочу создать резервную копию во время работы базы данных.
Вот соответствующая часть персистентности. 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 Tutorial говорится, что я должен использовать оператор sql "BACKUP TO 'backup.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. В то время как экспортная часть работает, импорт более проблематичен c, так как у меня много связей ManyToMany.

1 Ответ

1 голос
/ 12 февраля 2020

попробуйте entityManager.createNativeQuery(...) вместо

...