2013-12-22 58 views
-1

我嘗試使用java和hibernate傳遞一個小應用程序,當我運行此應用程序的測試類時正如你看到的錯誤是階級MetierImplhibernate錯誤:java.lang.ClassCastException:org.hibernate.impl.QueryImpl不能轉換爲javax.persistence.Query

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Hibernate: insert into REUNION (TITREREUNION, DATEREUNION) values (?, ?) 
Hibernate: insert into REUNION (TITREREUNION, DATEREUNION) values (?, ?) 
Hibernate: insert into REUNION (TITREREUNION, DATEREUNION) values (?, ?) 
Exception in thread "main" java.lang.ClassCastException: org.hibernate.impl.QueryImpl  cannot be cast to javax.persistence.Query 
at metier.MetierImpl.getAllReunion(MetierImpl.java:62) 
at Test.main(Test.java:21) 

:收到此錯誤信息導致錯誤的方法是:

public Reunion getAllReunion(){ 

    Session session =sessionFactory.getCurrentSession(); 
    session.beginTransaction(); 
    Query req=(Query) session.createQuery("select R from Reunion "); 
    List<Reunion> list = req.getResultList(); 
    Reunion r=(Reunion) req.getResultList().get(0); 

    return r; 


} 
+0

你不能只是刪除鑄造到(查詢)在線(查詢)session.createQuery(「選擇R留尼汪」); –

+0

當我刪除鑄造查詢這是一個錯誤,它迫使我添加鑄造 –

+0

,因爲你不使用正確的查詢類,你應該從休眠而不是javax.persistence.Query –

回答

3

休眠Session.createQuery()返回org.hibernate.Query一個實例。您的代碼將此對象轉換爲javax.persistence.Query,但它不是javax.persistence.Query的實例。所以你會得到這個例外。

不要進行這種轉換,並導入正確的Query類:不是javax.persistence.Query,而是org.hibernate.Query

+0

和返回類型org.hibernate.Query? –

+0

你是什麼意思?一個類沒有返回類型。一個方法有一個返回類型。 –

+0

我需要返回Reunion類的方法getAllReunion(),類似於javax.Persistance.Query中的列表re.getResultList(); –

相關問題