2

我正在尝试在我的 hudson 集成服务器上构建 Spring Roo 项目(= Spring MVC + aspectj + hibernate)。

项目配置tu use

<dependency>
<groupId>javax.persistence</groupId>
<artifactId>com.springsource.javax.persistence</artifactId>
<version>1.0.0</version>
</dependency>

使用我的本地 maven 构建工作正常,但服务器上的环境似乎注入了一些其他版本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 :)

4

2 回答 2

3

您在项目中使用 JPA2 吗?

JPA2 是 Java EE 6 的一部分,据我所知,您正在使用这种方法:

<T> TypedQuery<T> createQuery(java.lang.String qlString, java.lang.Class<T> resultClass)

JPA1 (Java EE 5) 中不存在此方法,正如您通过检查EntityManager可以看到的,其中只有

Query createQuery(String qlString)

存在。

所有这些都意味着 Hudson 正在使用javax.persistenceJPA1。我没有使用过 Hudson,所以您必须确定是否可以将其javax.persistence用于 JPA2。

于 2010-11-19T11:14:19.750 回答
0

奇怪的是它在本地工作。

您依赖于 JPA 1,但使用 JPA 2 ( createQuery(query, class)) 的方法。

检查您的本地类路径。

于 2010-11-19T11:15:20.067 回答