【问题标题】:JPA - Weaving not enabled while running test casesJPA - 运行测试用例时未启用编织
【发布时间】:2013-08-19 06:27:09
【问题描述】:

我有一个使用 Eclipselink 2.5 的应用程序,在运行 Junit 测试用例时,我总是收到以下警告:

[EL Warning]: metadata: 2013-08-19 01:14:05.142--ServerSession(14351551)--
Reverting the lazy setting on the OneToOne or ManyToOne attribute [currentTransit]
for the entity class [class ......persistent.entity.BPExecutionEntity] since
weaving was not enabled or did not occur.

所以,我在我的 Ant 构建文件上写了一个“编织”任务,如下所示:

<target name="define.task" description="New task definition for EclipseLink static weaving">
    <taskdef name="weave" classname="org.eclipse.persistence.tools.weaving.jpa.StaticWeaveAntTask"/>
</target>
<target name="weaving" description="perform weaving" depends="define.task">
    <weave  source="D:\...\dist\${ant.project.name}.jar"
            target="D:\...\dist\woven-${ant.project.name}.jar"
            persistenceinfo="D:\...\lib\persistence.jar">
        <classpath>
        </classpath>
    </weave>
</target>

好的,一切正常,当我编译代码时,它会生成一个已编译 jar 一半大小的编织文件。但是,当我运行项目的测试时,我仍然收到相同的警告blah blah blah... since weaving was not enabled or did not occur.

有人知道如何从我的测试中删除此警告吗?

【问题讨论】:

    标签: java jpa eclipselink


    【解决方案1】:

    我终于用动态编织解决了这个问题。由于我使用的是 Netbeans 7.3.1,所以我去了Project Options | Run | VM options 并添加了以下文本:-javaagent:C:\eclipselink\jlib\eclipselink.jar,您可以将地址更改为您在 eclipselink.jar 中找到的任何地址。

    然后我将此行添加到persistence.xml

    <property name="eclipselink.weaving" value="true"/>
    

    就是这样。此配置启用动态编织以执行测试用例并删除[EL Warning] Reverting the lazy setting on the OneToOne or ManyToOne attribute...etc.

    【讨论】:

    • 在 eclipselink 2.6.2(今天的最新版本)中,当 eclipselink 尝试加载 persistence.xml 文件时,使用 value="true" 会引发异常。您必须使用以下值之一:“null”、“false”、“static”。根据 API 文档,使用“静态”应该可以完成我们想要的工作。但是,我尝试使用“静态”,但仍然收到此警告。知道为什么吗?
    【解决方案2】:

    您需要指定在您的 persistence.xml 属性中使用静态编织。看 http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

    “步骤 2:配置 persitence.xml”了解详情

    【讨论】:

    • 嗨@Chris,感谢您的回答。是的,我已经在 persistence.xml 中有&lt;property name="eclipselink.weaving" value="static"/&gt;,但是在运行测试时它仍然显示警告。最近发现Junit引擎并没有使用/dist/文件夹下生成的jar文件来运行测试,所以编织jar文件进行测试没有意义。似乎解决方案是使用动态编织。
    猜你喜欢
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多