java - 为什么 h2 数据库驱动程序 (JPA) 不创建表,而 postgres 却创建表

标签 java sql postgresql jpa h2

在 JPA 项目中,使用 postgresql 驱动程序时,表是自动生成的。当我切换到 h2 数据库驱动程序时,我收到错误,找不到表。这让我假设表格没有生成。

Postgresql 配置

<persistence-unit name="postgresql" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>...</class>
    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://127.0.0.1/example"/>
        <property name="javax.persistence.jdbc.password" value="example"/>
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
        <property name="javax.persistence.jdbc.user" value="example"/>
        <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
    </properties>
</persistence-unit>

h2 配置

<persistence-unit name="OntoJobTestDB" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>...</class>    
    <properties>
        <property name="javax.persistence.jdbc.driver" value="org.h2.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:test" />
        <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
        <property name="eclipselink.ddl-generation.output-mode" value="database" />
    </properties>
</persistence-unit>

最佳答案

事实证明,无法找到这些表,因为它们从未创建过。由 postgresql 特定的 @Converter 注释引起的早期错误阻止了表的创建。

我的建议是始终仔细检查调试输出。

关于java - 为什么 h2 数据库驱动程序 (JPA) 不创建表,而 postgres 却创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23633949/

相关文章:

java - MediaPlayer android 流广播不立即启动或根本不启动

sql - 使用子查询而不是表名

PostgreSQL:无法对某些数据类型使用 DISTINCT

sql - 如何修复 AWS Athena 的 SQL

postgresql - 如何从 Postgres 数据库到 Hadoop 序列文件?

Google 协作平台中的 Java 小程序和 "Incompatible Magic Number"错误

java - java中的通用csv解析器

JavaBean DataSource 未传递到子子报告

mysql - 使用 SQL 从行中的值创建列

SQL CASE语句检查字段中的多个拼写并在找到时返回相同的值?