【问题标题】:openJPA on Java SEJava SE 上的 openJPA
【发布时间】:2011-01-08 19:04:09
【问题描述】:

我尝试在 ibm RAD 上开发 JPA 项目。我可以在 Webpshere 上成功运行它, 但问题是我的机器很旧。所以在 Java EE 容器中部署不是 合理。我想在 JSE 上运行它。但是它给出了以下错误:

94  test  INFO   [main] openjpa.Runtime - Starting OpenJPA 1.2.1-SNAPSHOT
235  test  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class "com.ibm.ws.persistence.jdbc.sql.DB2Dictionary".
1797  test  WARN   [main] openjpa.Enhance - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "[class Customer]".
Exception in thread "main" <openjpa-1.2.1-SNAPSHOT-r422266:686069 fatal user error> org.apache.openjpa.persistence.ArgumentException: The type "class Customer" has not been enhanced.
    at org.apache.openjpa.meta.ClassMetaData.resolveMeta(ClassMetaData.java:1650)
    at org.apache.openjpa.meta.ClassMetaData.resolve(ClassMetaData.java:1624)
    at org.apache.openjpa.meta.MetaDataRepository.processBuffer(MetaDataRepository.java:717)
    at org.apache.openjpa.meta.MetaDataRepository.resolveMeta(MetaDataRepository.java:616)
    at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:541)
    at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
    at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1114)
    at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:268)
    at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:451)
    at deneme.main(deneme.java:21)

我错过了什么?

我的persistent.xml是:

**<?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="test" transaction-type="RESOURCE_LOCAL">
    <provider>
        com.ibm.websphere.persistence.PersistenceProviderImpl
    </provider> 
        <class>Customer</class>
        <properties>
            <property name="openjpa.ConnectionDriverName" value="com.ibm.db2.jcc.DB2Driver"/>
            <property name="openjpa.ConnectionURL" value="jdbc:db2://localhost:50000/PARUD:retrieveMessagesFromServerOnGetMessage=true;"/>
            <property name="openjpa.ConnectionUserName" value="db2admin"/>
            <property name="openjpa.ConnectionPassword" value="xxxxx"/>
            <property name="openjpa.jdbc.Schema" value="POOL"/>
        </properties>
    </persistence-unit>
</persistence>**

【问题讨论】:

    标签: orm jpa openjpa java


    【解决方案1】:

    我刚刚完成了让 OpenJPA 2.1.0 在 Tomcat 7.0 上运行的练习。我根本无法让运行时增强在 Tomcat 下工作,所以我放弃并决定使用构建时增强。我正在 Eclipse 下开发我的代码,所以我按照这里的说明进行操作:

    http://openjpa.apache.org/enhancement-with-eclipse.html

    但请注意,此页面上的说明适用于通用 Java 项目。如果您正在使用动态 Web 项目,请确保正确指定构建目录参数。我使用了 -Dbuild.dir=build/classes,这是编译代码的典型位置。

    还有一个你必须忍受的烦人的怪癖。您必须使用“Project > Build Project”菜单项手动调用构建器。当增强器运行时,它会修改先前构建的类。因此,在发布到 Tomcat 之前,您需要为项目点击 F5 或 Refresh。

    【讨论】:

      【解决方案2】:

      只是一个指针: 您需要增强您的课程,例如在运行时通过 -javaagent:yourlib.jar 甚至在编译时。你可以了解更多关于这个话题here:

      “获得运行时增强的第二种推荐方法是在启动运行 OpenJPA 的 JVM 时提供 javaagent。”

      【讨论】:

      • 是的,我试过 javaagent.like 这个 -javaagent:C:\Program Files\IBM\WebSphere\AppServer\plugins\com.ibm.ws.jpa.jar 它给出了错误:“无法创建Java 虚拟机”
      • 问题是这里的空间“程序文件”。我将文件移动到“C:\com.ibm.ws.jpa.jar”下,一切似乎都还好。在此先感谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      相关资源
      最近更新 更多