Spring Data JPA需要使用Eclipse link和Hibernate吗?

4
我已将Spring data从1.7.1升级到1.9.0,立即出现了依赖和编译错误:
致命错误编译:java.lang.RuntimeException: com.sun.tools.javac.code.Symbol$CompletionFailure:找不到org.hibernate.ScrollableResults的类文件
由于各种原因(技术和政治),我们使用Eclipse Link作为我们的JPA提供程序。然而,似乎类org.springframework.data.jpa.provider.PersistenceProvider现在包含对hibernate和open jpa类的静态引用。
import org.apache.openjpa.enhance.PersistenceCapable;
import org.apache.openjpa.persistence.OpenJPAPersistence;
import org.apache.openjpa.persistence.OpenJPAQuery;
import org.apache.openjpa.persistence.jdbc.FetchDirection;
import org.apache.openjpa.persistence.jdbc.JDBCFetchPlan;
import org.apache.openjpa.persistence.jdbc.LRSSizeAlgorithm;
import org.apache.openjpa.persistence.jdbc.ResultSetType;
import org.eclipse.persistence.jpa.JpaQuery;
import org.eclipse.persistence.queries.ScrollableCursor;
import org.hibernate.ScrollMode;
import org.hibernate.ScrollableResults;
import org.hibernate.ejb.HibernateQuery;

我很困惑- 我找不到关于Hibernate现在是唯一的JPA提供者的任何参考资料。难道我们必须包含Hibernate和Eclipse Link(或Bin Eclipse Link并重写其他大块代码),才能使用1.9吗?


更多信息。 如果我删除以下内容,则一切都可以构建<dependency> <groupId>org.eclipse.persistence</groupId> <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId> <version>2.6.1</version> </dependency>因此,似乎EclipseLink JPA元模型构造不喜欢使用1.8+ Spring数据导入的额外类。 有没有首选的方法来使用maven生成元模型? - Adam Green
1个回答

0
不,这不是必要的。这些类只在运行时使用,当您真正使用OpenJPA或Hibernate作为持久性提供程序时。除此之外,在版本1.7.1中已经存在所有三个提供程序的类的用法,因此您早就应该遇到了这个问题。
您是否在升级版本的同时更改了任何编译器选项?我有时会收到此错误,但对我来说只是一个警告,因此如果您增加了此类型的编译器警告的错误级别,这可能是原因。

我认为这不正确。对此文件的更改在以下提交中进行: https://github.com/spring-projects/spring-data-jpa/commit/5a3d92053293c8be4a405aa33ad8b413671a6f3a 该提交已标记为发布1.8及以上版本的分支。 它不包含任何1.7.X版本的代码。 - Adam Green
你为什么这样想?我在许多项目中都使用Spring Data和Hibernate,没有遇到任何问题,而且我的类路径中没有OpenJPA或Eclipselink。关于那个文件:在那个提交中添加了额外的导入,但是在之前的版本中每个提供程序已经有一个或两个导入了。 - dunni
这是1.7.x分支中的文件:https://github.com/spring-projects/spring-data-jpa/blob/1.7.x/src/main/java/org/springframework/data/jpa/repository/support/PersistenceProvider.java 正如您所看到的,该版本已经有了这些导入。 - dunni
整个Spring Data JPA源代码中唯一提到Hibernate可滚动结果的引用就在那个类中。1.7.1 -> 1.7.4版本都可以正常工作。 然而,1.8版本立即抱怨编译错误,因为缺少ScrollableResults符号。这不是运行时错误。 - Adam Green
不,没有更改编译器选项。 - Adam Green
1.7.x分支不包含所有的导入,包括导致错误ScrollableResults的导入。 - Adam Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接