Jpa WEB9031-无法存储序列生成id为的实体

Jpa WEB9031-无法存储序列生成id为的实体,jpa,glassfish,ejb,Jpa,Glassfish,Ejb,我正在使用glassfish、postgres和openjpa 我只有一个bean,首先要创建一个新的intance并将其存储在DB中。我创建了一个新的用户对象,除了id之外都填充了它,并得到了-正在尝试持久化-以下异常: Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because i

我正在使用glassfish、postgres和openjpa

我只有一个bean,首先要创建一个新的intance并将其存储在DB中。我创建了一个新的用户对象,除了id之外都填充了它,并得到了-正在尝试持久化-以下异常:

Caused by: java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1401)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
at org.myPlace.server.user.UserPDO.pcNewObjectIdInstance(UserPDO.java)
at org.apache.openjpa.enhance.PCRegistry.newObjectId(PCRegistry.java:142)
at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClass(MetaDataRepository.java:1694)
at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClasses(MetaDataRepository.java:1644)
... 128 more

 WARNING: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for
 servlet Faces Servlet threw exception
 java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource   
 [org.apache.openjpa.util.LongId], because it has not yet been started, or was already stopped
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1401)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
at org.myPlace.server.user.UserPDO.pcNewObjectIdInstance(UserPDO.java)
at org.apache.openjpa.enhance.PCRegistry.newObjectId(PCRegistry.java:142)
at org.apache.openjpa.meta.MetaDataRepository.processRegisteredClass(MetaDataRepository.java:1694)
我的豆子看起来像这样:

@Entity
@Table(name="tbl_User")
public class UserPDO implements Serializable {

private long id;
private String username;
private String password;

public UserPDO() {}

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user_seq_gen") 
@SequenceGenerator(name="user_seq_gen", sequenceName="user_seq")
public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

... }
<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
                             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="myPlace" transaction-type="JTA">

    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

    <class>org.myPlace.server.user.UserPDO</class>

    <properties>
      <property name="openjpa.jdbc.DBDictionary" value="postgres"/>

      <property name="openjpa.ConnectionDriverName" value="org.postgresql.Driver"/>
      <property name="openjpa.ConnectionURL" value="jdbc:postgresql://localhost:5432/myPlace"/>
      <property name="openjpa.ConnectionPassword" value="myPlace"/>
      <property name="openjpa.ConnectionUserName" value="myPlace"/>

      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> 
      <property name="openjpa.Log" value="File=/home/username/apache.log, DefaultLevel=ERROR, Tool=INFO, SQL=TRACE"/>

      <property name="openjpa.DynamicEnhancementAgent" value="false" />
      <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
      <property name="openjpa.DataCache" value="false"/>
      <property name="openjpa.QueryCache" value="false"/>
    </properties>

</persistence-unit> 
My persistence.xml如下所示:

@Entity
@Table(name="tbl_User")
public class UserPDO implements Serializable {

private long id;
private String username;
private String password;

public UserPDO() {}

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="user_seq_gen") 
@SequenceGenerator(name="user_seq_gen", sequenceName="user_seq")
public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

... }
<?xml version="1.0" encoding="UTF-8"?>

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
                             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="myPlace" transaction-type="JTA">

    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

    <class>org.myPlace.server.user.UserPDO</class>

    <properties>
      <property name="openjpa.jdbc.DBDictionary" value="postgres"/>

      <property name="openjpa.ConnectionDriverName" value="org.postgresql.Driver"/>
      <property name="openjpa.ConnectionURL" value="jdbc:postgresql://localhost:5432/myPlace"/>
      <property name="openjpa.ConnectionPassword" value="myPlace"/>
      <property name="openjpa.ConnectionUserName" value="myPlace"/>

      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/> 
      <property name="openjpa.Log" value="File=/home/username/apache.log, DefaultLevel=ERROR, Tool=INFO, SQL=TRACE"/>

      <property name="openjpa.DynamicEnhancementAgent" value="false" />
      <property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
      <property name="openjpa.DataCache" value="false"/>
      <property name="openjpa.QueryCache" value="false"/>
    </properties>

</persistence-unit> 
表的创建是正确的,序列也是正确的。但是当我想通过

public <T> T create(T t) {
    this.em.persist(t);
    this.em.flush();
    this.em.refresh(t);
    return t;
}
我得到了上面提到的例外情况。我在这里发现了一些问题/答案,这些问题/答案表明,停用运行时增强功能应该可以解决问题。但这对我不起作用。我的第一个想法是,这可能是类加载器泄漏。我将postgres驱动程序和openjpa jars复制到glassfish/lib文件夹中

有人能帮忙吗?谢谢