Postgresql OpenJPA无法在Postgres DB中创建/插入表

Postgresql OpenJPA无法在Postgres DB中创建/插入表,postgresql,java-ee-6,glassfish-3,openjpa,Postgresql,Java Ee 6,Glassfish 3,Openjpa,为了更熟悉新的JavaEE6系统,我创建了一个小的演示应用程序,它应该能够在postgres数据库中存储一些用户输入 我正在使用: -玻璃鱼3.1 -博士后9.1 -OpenJPA 2.1.1 为此,我编写了以下实体: @Entity public class User implements Serializable { @Id @GeneratedValue(generator="user_seq",strategy=GenerationType.SEQUENCE) @SequenceG

为了更熟悉新的JavaEE6系统,我创建了一个小的演示应用程序,它应该能够在postgres数据库中存储一些用户输入

我正在使用:
-玻璃鱼3.1
-博士后9.1
-OpenJPA 2.1.1

为此,我编写了以下实体:

@Entity
public class User implements Serializable
{

@Id
@GeneratedValue(generator="user_seq",strategy=GenerationType.SEQUENCE) 
@SequenceGenerator(name="user_seq", sequenceName="user_seq",allocationSize=1) 
public Long id;
数据库完全为空,连接池在glassfish中配置。My persistence.xml如下所示:

 <persistence-unit name="myDatabase" transaction-type="JTA" >
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>jdbc/myDatabase</jta-data-source>
      <properties>
          <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
          <property name="openjpa.jdbc.DBDictionary" value="postgres" />
        </properties>
</persistence-unit>
@Stateless
public class DAOService
{
@PersistenceContext
protected EntityManager em;

public <T> T create(T t)
{
    this.em.persist(t);
    this.em.flush();
    this.em.refresh(t);
    return t;
}
SQL语句似乎很好。如果我自己创建表“user”,我会得到ReportingSQLException,即openjpa无法在现有表中插入实体

首先,我认为openjpa和postgre都希望通过激活的模式创建来创建序列。因此,将属性更改为:

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(Sequences=false)" />

不幸的是,这也不起作用

我还能说什么。。陛下我的刀是这样的:

 <persistence-unit name="myDatabase" transaction-type="JTA" >
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <jta-data-source>jdbc/myDatabase</jta-data-source>
      <properties>
          <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" />
          <property name="openjpa.jdbc.DBDictionary" value="postgres" />
        </properties>
</persistence-unit>
@Stateless
public class DAOService
{
@PersistenceContext
protected EntityManager em;

public <T> T create(T t)
{
    this.em.persist(t);
    this.em.flush();
    this.em.refresh(t);
    return t;
}
@无状态
公共类服务
{
@持久上下文
受保护的实体管理器em;
公共T创建(T)
{
这个.em.persist(t);
这个.em.flush();
这个.em.refresh(t);
返回t;
}

谢谢您的帮助。

也许“User”是postgres上的保留关键字?您可以尝试将实体的名称指定为User0或其他名称吗