Jan*_*sen 20 netbeans java-ee-6
我在Netbeans 7中有一个Java EE 6项目,当我在IDE中编译并启动它时运行正常.但是,当我清理和构建项目时,我得到了一个
java.lang.RuntimeException::javax.annotation.processing.FilerException尝试为类型{myclass} 重新创建文件
(其中myclass始终是JPA实体类).
如果我在代码中更改某些内容,它会更改哪个实体类.
我不知道可能导致这个错误的原因 - 任何人都可以提供一个想法.
我使用的唯一额外的lib是Velocity.
更新:我在同一个数据库上使用两个持久性单元,一个是"普通",另一个是非事务性.我用于将事物记录到数据库的非事务性的; 每次插入日志事件后提交.
当我改变它并且只使用一个'普通'PU时,项目编译得很好.可能是两个PU干扰了eclipselink做的一些优化吗?
这是堆栈跟踪的开始:
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
java.lang.RuntimeException: javax.annotation.processing.FilerException: Attempt to recreate a file for type de.guj.contenthub.ftdts.entity.AgofEntry_
at org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor.process(CanonicalModelProcessor.java:407)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:625)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:554)
at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:699)
at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:981)
at com.sun.tools.
Run Code Online (Sandbox Code Playgroud)
小智 28
有两个持久性单元使用相同的Entity类似乎确实是问题.
在我的情况下,我有一个用于查询数据的单元,另一个用于验证.用于身份验证的那个不需要了解我的Entity类,因此在Netbeans中我必须取消选中"包含MyWebServiceProject"模块中的所有实体类.
或者添加:
<exclude-unlisted-classes>true</exclude-unlisted-classes>
到该持久性单元的web.xml文件.
miq*_*miq 19
我通过设置解决了这个问题
<property name="eclipselink.canonicalmodel.subpackage" value="foobar"/>
Run Code Online (Sandbox Code Playgroud)
对于persistence.xml中的每个持久性单元.每个单元的值必须是唯一的.然后将类生成到不同的包中,例如.com.mycompany.foo.PojoOne_和com.mycompany.bar.PojoOne_而不仅仅是com.mycompany.PojoOne_.
答案者是在persistence.xml文件中创建它;
<persistence-unit name="prod_PU">
<properties>
<property name="eclipselink.canonicalmodel.subpackage" value="prod"/>
</properties>
</persistence-unit>
<persistence-unit name="dev_PU">
<properties>
<property name="eclipselink.canonicalmodel.subpackage" value="dev"/>
</properties>
</persistence-unit>
Run Code Online (Sandbox Code Playgroud)
例如,entity1的包将生成为:
entity1.prod
entity1.dev
Run Code Online (Sandbox Code Playgroud)
看来,问题是我在两个不同的持久性单元中使用同一个实体类。我不确定这是否被 JPA 一般禁止,或者只是 eclipselink 的问题。
我发现的一个“解决方案”是复制我的实体类。不太好,但目前可以使用。
仍然欢迎更多答案。
| 归档时间: |
|
| 查看次数: |
21423 次 |
| 最近记录: |