2015-11-10 104 views
4

我已經升級了春天的數據從1.7.1到1.9.0,並立即得到了依賴和編譯錯誤:Spring Data JPA需要Eclipse鏈接和Hibernate?

致命錯誤編譯:了java.lang.RuntimeException: com.sun.tools.javac.code .Symbol $ CompletionFailure:爲 org.hibernate.ScrollableResults類文件未找到

對於我們使用Eclipse作爲鏈接我們的JPA提供各種原因(包括技術和政治)。不過,看起來類org.springframework.data.jpa.provider.PersistenceProvider現在包含靜態引用hibernate和打開的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鏈接(或bin eclipse鏈接並重寫大塊其他代碼)才能使用1.9?

+0

一些更多信息。 建立的一切,如果我刪除 ' org.eclipse.persistence org.eclipse.persistence.jpa.modelgen.processor 2.6.1 ' 所以出現的EclipseLink JPA元模型建設不喜歡1.8 + Spring數據導入的額外類。 有沒有一種優先使用maven生成元模型的方法? –

回答

0

不,沒有必要。這些類只在運行時使用,當你真的使用OpenJPA或Hibernate作爲持久性提供。除此之外,所有三個提供者的類的使用已經在該類的1.7.1版本中存在,所以你可能會更早地遇到這個問題。

您是否在版本升級的同時更改了任何編譯器選項?我有時會得到這個錯誤,但對我來說這只是一個警告,所以如果你已經增加了這種類型的編譯器警告的錯誤級別,這可能是原因。

+0

我不認爲這是正確的。對此文件的更改如下所示: https://github.com/spring-projects/spring-data-jpa/commit/5a3d92053293c8be4a405aa33ad8b413671a6f3a 標記爲1.8及更高版本的分支。 它不是在版本1.7.X的任何代碼 –

+0

你爲什麼這麼認爲?我在許多項目中使用Spring Data with Hibernate,沒有任何問題,並且我的班級中沒有OpenJPA或Eclipselink。關於該文件:在該提交中添加了額外的導入,但在以前的版本中,每個提供程序已經有一個或兩個導入。 – dunni

+0

這是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

相關問題