gpt4 book ai didi

gradle - 如何使用 gradle 增强 openJPA 的类

转载 作者:行者123 更新时间:2023-12-03 06:00:56 26 4
gpt4 key购买 nike

我被困在设置一个简单的测试程序
- eclipse
- gradle(Eclipse Buildship 插件)
- openjpa

当我尝试运行我的应用程序时,当我调用 entityManager.persist(...) 方法时出现此错误:

线程“main”org.apache.openjpa.persistence.ArgumentException 中的异常:尝试将实例“test.jpa.Person@27c6e487”转换为 PersistenceCapable 失败。确保它已得到增强。
失败对象:test.jpa.Person@27c6e487

该程序很简单,它只有一个实体(Person.java)。
我的 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="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="ptest"
transaction-type="RESOURCE_LOCAL">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/ptest" />
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="openjpa.ConnectionUserName" value="..." />
<property name="openjpa.ConnectionPassword" value="..." />
<property name="openjpa.RuntimeUnenhancedClasses" value="unsupported" />
<property name="openjpa.DynamicEnhancementAgent" value="false" />
<property name="openjpa.Log" value="SQL=ERROR" />
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
<property name="openjpa.ConnectionFactoryProperties"
value="PrettyPrint=true, PrettyPrintLineLength=72, PrintParameters=true, MaxActive=10, MaxIdle=5, MinIdle=2, MaxWait=60000" />
</properties>
</persistence-unit>
</persistence>
我使用了 RuntimeUnenhancedClasses=unsupported 和 DynamicEnhancementAgent=false,因为它是 apache 推荐的。但是我已经尝试过使用“supported”和“true”,但我仍然得到同样的错误(对于 openjpa 版本 2.1.0 - 对于更高版本,我得到一个带有“supported/true”的 LinageError)。

我尝试了不同版本的 jpa,目前使用的是 2.4.2。

我已经准备好使用 gradle 脚本来增强我的类(class),我试过了
  • 'at.schmutterer.oss.gradle:gradle-openjpa:0.2.0'
  • 'neva.openjpa'

  • 还有更多,但我就是无法提高类(class)。

    当然,我已经好一段时间了。我很感谢我能遵循的任何想法......

    提前致谢!

    最佳答案

    以防万一其他人有同样的挣扎。我找到了解决这个问题的方法:

    TomEE 附带 JPA 和所需的一切。 eclipse“gradle buildship”插件可用于编译代码。因此,以下组件的组合对我来说非常有效:

  • apache-tomee-plus-7.0.2
  • tomcat v8.5 服务器(指向 apache-tommee 安装)
  • 动态 Web 项目(使用动态 Web 模块 3.1)
  • Java 运行环境 v1.8

  • gradle 脚本简化为:
    apply plugin: 'war'

    repositories {
    mavenCentral()
    }

    dependencies {
    providedCompile "javax:javaee-api:7.0"
    }

    我想它也适用于 TomEE 1.7.x 和 javaee-api:6.0,但我还没有尝试过。

    关于gradle - 如何使用 gradle 增强 openJPA 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783495/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com