如何在JPA中添加记录之前创建H2表

时间:2014-07-20 17:30:14

标签: jpa h2 openjpa persistence.xml

我的项目涉及JPA,并在我的persistence.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="rest-jpa">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <jta-data-source>java:/comp/env/jdbc/restDB</jta-data-source>
        <class>org.wso2.as.ee.Student</class>
        <properties>
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
        </properties>
    </persistence-unit>
</persistence>

我的H2数据库是一个内存数据库。

当我在添加记录之前尝试查找记录时,它会给出找不到表的错误。我认为只有在向数据库添加记录时才会创建表。如何在添加任何记录之前创建表格?

1 个答案:

答案 0 :(得分:1)

您可以使用以下JPA属性:

每次运行应用程序时生成并执行DROP TABLECREATE TABLE脚本:

  • javax.persistence.schema-generation.database.action=drop-and-create

创建数据库后加载一些预定义数据:

  • javax.persistence.sql-load-script-source="META-INF/loadData.ddl"

创建架构应该延迟,直到使用实体(至少在使用JPA的情况下),因此您可以使用JPA属性来保证此行为。如果您仍然发现此行为,则应在JPA提供程序bugtracker上制作错误票据。