Java Hibernate-未创建H2数据库

Java Hibernate-未创建H2数据库,java,hibernate,h2,Java,Hibernate,H2,我希望将Hibernate与H2一起使用,并希望自动创建模式。网上有很多例子,我的配置看起来不错,但它不是创建的。以前我将它与MySQL一起使用,没有任何问题。H2的任何位置是否包含其他参数 我的持久化单元在persistence.xml中定义如下: <persistence-unit name="some.jpa.name" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.jpa.H

我希望将
Hibernate
H2
一起使用,并希望自动创建模式。网上有很多例子,我的配置看起来不错,但它不是创建的。以前我将它与MySQL一起使用,没有任何问题。
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>
在我的代码中的某个地方,我试图持久化一个实体:

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;
这是预期的,因为未创建架构


如何创建模式?

此问题的原因与此无关!我在这里写这封信,以防其他人也会面对它,花半天时间做这样一件蠢事

首先,我将
H2
更改为
Derby
以进行检查,并且工作正常。通过这种方式,我确信
persistence.xml
配置没有问题


在搜索日志之后,我意识到hibernate无法创建表,因为
关键字任务
实体的属性之一是
限制
,它是一个保留字!(还记得我保存一个实例并观察setter名称的地方:
setLimit
)更改属性名称后,它工作了。

有什么帮助吗?@jaivalis我的情况很简单。我不知道这是否有帮助,但一定有更好的办法。
org.h2.jdbc.JdbcSQLException: Table "KEYWORDTASK" not found;