我正在尝试在我的 hudson 集成服务器上执行 Spring Roo 项目(= Spring MVC +spectj + hibernate)的构建。
项目已配置完毕,可以使用
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>com.springsource.javax.persistence</artifactId>
<version>1.0.0</version>
</dependency>
使用本地 Maven 构建工作正常,但服务器上的环境似乎注入(inject)了其他版本的 javax.persistence
,这导致了这些错误:
[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Long>)
[ERROR] The method createQuery(String) in the type EntityManager is not applicable for the arguments (String, Class<Folder>)
构建是用maven运行的,它的配置是:
Apache Maven 2.2.1 (rdebian-4)
Java version: 1.6.0_18
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux" version: "2.6.32-5-amd64" arch: "amd64" Family: "unix"
编辑:我在本地和服务器上没有使用相同版本的 roo :)
最佳答案
您在项目中使用 JPA2 吗?
JPA2 是 Java EE 6 的一部分,据我所知,您正在使用 this方法:
<T> TypedQuery<T> createQuery(java.lang.String qlString, java.lang.Class<T> resultClass)
此方法在 JPA1 (Java EE 5) 中不存在,您可以通过检查 EntityManager 看到这一点。仅在哪里
Query createQuery(String qlString)
存在。
所有这些都意味着 Hudson 正在为 JPA1 使用 javax.persistence
。我还没有使用过 Hudson,因此您必须了解是否可以使其对 JPA2 使用 javax.persistence
。
关于maven-2 - java-6-openjdk 中的 javax.persistence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4224259/