我想使用Hibernate
和H2
,我希望模式自動創建。網上有很多例子,我的配置看起來很好,但它並沒有創建。以前我用它與MySQL
並沒有任何問題。 H2
是否有附加參數可以包含在任何地方?休眠 - 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設置爲true,我希望看到創建語句,但什麼也沒有發生,即沒有創建的模式。
我把我的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他的架構不會被創建。
如何獲取創建的模式?
是[this](http://stackoverflow.com/a/25156520/574975)的任何幫助? – jaivalis
@jaivalis我的情況很簡單。我不知道這是否會有所幫助,但必須有更好的辦法。 – ram