Postgresql 使用glassfish 4和Postgres在eclipselink中创建数据库不起作用

Postgresql 使用glassfish 4和Postgres在eclipselink中创建数据库不起作用,postgresql,eclipselink,glassfish-4,Postgresql,Eclipselink,Glassfish 4,我想创建基于实体的数据库。配置: Glassfish:Glassfish服务器开源版本4.1(构建13) Eclipselink:EclipsePersistenceServices-2.5.2.v20140319-9ad6abd(随glassfish一起提供) 数据库:PostgreSQL版本:9.4.2 驱动程序:PostgreSQL本机驱动程序版本:PostgreSQL 9.4 JDBC4.1(build 1201) 从eclipselink开始创建数据库的那一刻起,在将大量日志参数放

我想创建基于实体的数据库。配置:

  • Glassfish:Glassfish服务器开源版本4.1(构建13)
  • Eclipselink:EclipsePersistenceServices-2.5.2.v20140319-9ad6abd(随glassfish一起提供)
  • 数据库:PostgreSQL版本:9.4.2
  • 驱动程序:PostgreSQL本机驱动程序版本:PostgreSQL 9.4 JDBC4.1(build 1201)
从eclipselink开始创建数据库的那一刻起,在将大量日志参数放置在finest上之后,我在日志中看到以下语句:

  • 从ID所在的表\u name中选择ID
  • 选择1
重复4-5次。第一个查询给出了以下明显的postgres错误:

org.postgresql.util.PSQLException:错误:关系“table_name”不存在 职位:16

因此,以下查询会导致以下错误:

org.postgresql.util.PSQLException:错误:当前事务被中止,在事务块结束之前忽略命令

在此日食之后,Elink继续创建表:

创建表\u名称(ID BIGINT不为NULL,主键(ID))

但会产生同样的错误

由于某种原因,在事务中创建数据库。我发现源代码是有责任的,但我无法找出事务是如何启动的。我可以提供更详细的信息,但也许现在已经有人可以帮忙了

编辑:persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" 
    xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="h ttp://java.sun.com/xml/ns/persistence    
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        <persistence-unit name="AntennasOperatingSystemServerPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <non-jta-data-source>MyDatabase</non-jta-data-source>
        <class>... bunch of classes ... </class>
        <exclude-unlisted-classes>true</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.logging.level" value="ALL"/>
            <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.DefaultSessionLog"/>
            <property name="eclipselink.deploy-on-startup" value="true"/>
            <property name="eclipselink.ddl-generation.output-mode" value="database"/>
            <property name="eclipselink.logging.level.sql" value="FINEST"/>
            <property name="eclipselink.ddl-generation" value="create-tables"/>
            <property name="eclipselink.target-database" value="PostgreSQL" />
        </properties>
    </persistence-unit>
</persistence>

org.eclipse.persistence.jpa.PersistenceProvider
我的数据库
... 一堆课。。。
真的

您是否尝试过将
eclipselink.target database
属性设置为
PostgreSQL
org.eclipse.persistence.platform.database.PostgreSQLPlatform


如果上述问题无法解决,请共享persistence.xml文件。

我不久前也做了类似的事情。以下配置运行良好

<persistence-unit name="EjemploJpaPU" transaction-type="RESOURCE_LOCAL">
  <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
  <exclude-unlisted-classes>false</exclude-unlisted-classes>
  <properties>
    <property name="javax.persistence.jdbc.url" 
              value="jdbc:derby://localhost:1527/example"/>
    <property name="javax.persistence.jdbc.driver" 
              value="org.apache.derby.jdbc.ClientDriver"/>
    <property name="javax.persistence.jdbc.user" value="root"/>
    <property name="javax.persistence.jdbc.password" value="123"/>
    <property name="eclipselink.logging.level" value="ALL"/>
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
  </properties>
</persistence-unit>

org.eclipse.persistence.jpa.PersistenceProvider
假的
显然,一旦创建了表,就需要将属性
eclipselink.ddl generation
的值更改为
none


注意:数据库是Derby,但我也用MySQL尝试过。我认为它可以与PostgreSQL一起使用。

我尝试了这个,它只改变了错误的外观。。。但同样的错误出现了你有没有找到解决办法?