如何使用gradle

时间:2017-01-21 19:22:15

标签: gradle openjpa

我很难设置一个简单的测试程序 - 日食 - gradle(Eclipse Buildship插件) - openjpa

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

线程中的异常" main" org.apache.openjpa.persistence.ArgumentException:尝试强制转换实例" test.jpa.Person@27c6e487"到PersistenceCapable失败。确保它已得到增强。 FailedObject: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推荐的。但我已尝试过&#34;支持&#34;和&#34;真&#34;我仍然得到相同的错误(对于openjpa版本2.1.0 - 对于更高版本,我得到一个LinageError&#34;支持/ true&#34;)。

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

我已经帮助gradle脚本来增强我的课程,我试过

  • &#39; at.schmutterer.oss.gradle:gradle这个-OpenJPA中:0.2.0&#39;

  • &#39; neva.openjpa&#39;

还有一些,但我无法提升课程。

当然,我已经相当一段时间了。我很感激我能跟进的任何想法......

提前致谢!

1 个答案:

答案 0 :(得分:0)

以防其他人有同样的斗争。我找到了解决这个问题的方法:

TomEE附带JPA以及所需的一切。日食&#34; gradle buildship&#34;插件可用于编译代码。因此,以下组件的组合对我来说非常合适:

  • Apache的tomee加7.0.2
  • tomcat v8.5服务器(指向apache-tommee安装)
  • 动态Web项目(使用Dynamic Web Module 3.1)
  • Java Runtime Environment v1.8

gradle脚本简化为:

apply plugin: 'war'

repositories {
    mavenCentral()
}

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

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