Я хочу использовать Hibernate
с H2
, и я хочу, чтобы схема была создана автоматически. Есть много примеров в Интернете, и мои конфигурации кажутся прекрасными, но они не созданы. Раньше я использовал его с MySQL
и не имел никаких проблем. Существуют ли дополнительные параметры, которые должны быть включены в любом месте для H2
?Hibernate - H2 база данных не создана
Моя настойчивость единица определяется в persistence.xml
следующим образом:
<persistence-unit name="some.jpa.name"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- tried with and without class property
<class>some.package.KeywordTask</class>
-->
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:h2:./test" />
<property name="javax.persistence.jdbc.user" value="" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="show_sql" value="true" />
</properties>
</persistence-unit>
Поскольку show_sql устанавливается истина, я ожидаю увидеть создать заявления, но ничего не происходит, то схема не создается.
Я держу мой EntityManagerFactory
как final
static
переменной:
public static EntityManagerFactory emf = Persistence.createEntityManagerFactory("some.jpa.name");
В каком-то месте в моем коде, я пытаюсь упорствовать сущность:
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
KeywordTask task = new KeywordTask();
task.setKeyword(keywordTask.getKey());
task.setLimit(keywordTask.getValue());
em.persist(task);
em.getTransaction().commit();
em.close();
Это кидает исключение с кодом причины:
org.h2.jdbc.JdbcSQLException: Table "KEYWORDTASK" not found;
, который ожидается, так как t он не создан.
Как я могу создать схему?
Есть ли [это] (http://stackoverflow.com/a/25156520/574975) какой-либо помощи? – jaivalis
@jaivalis Мое дело довольно простое. Я не знаю, может ли это помочь, но должен быть лучший способ. – ram