2014-01-21 52 views
0

我正在使用EclipseLink實現的JPA。我需要做一個關於我的MRAEmpleado實體的原生SQL查詢。使用本機SQL查詢投射錯誤JPA Eclipse Link

這是我的代碼:

private List<MRAProyecto> ordenarProyectos(){ 
     Query q = em.createNativeQuery("Select *From MRAProyecto ORDER BY PROY_ID"); 
     return (List<MRAProyecto>)q.getResultList(); 
    } 
     List<MRAProyecto> consultaProyectos = startup.ordenarProyectos(); 
     System.out.println("Lista de proyectos ordenados por su identificador"); 
     for (MRAProyecto proyecto:(List<MRAProyecto>)consultaProyectos){ 

      System.out.println(proyecto.toString()); 
     } 

但是當我執行我的應用程序啓動此錯誤:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to entity.MRAProyecto 
at Startup.main(Startup.java:39) 

我試圖與所有鑄造posibilities,但投誤差不dissapear 。

回答

0

使用以下調用進行解析。

查詢createNativeQuery(java.lang.String sqlString,java.lang.Class resultClass) 創建一個用於執行本機SQL查詢的Query實例。

http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery%28java.lang.String,%20java.lang.Class%29

您需要resultSetClass定義要檢索entitiy

+0

我在哪裏可以定義實體?我不太瞭解,我已經完成了System.out.println(q.getResultList()。get(0).getClass());和這個打印類[Ljava.lang.Object;不應該是MRAProyecto? – user3118887

+0

Query q = em.createNativeQuery(「Select * From MRAProyecto ORDER BY PROY_ID」);使用Query q = em.createNativeQuery(「Select * From MRAProyecto ORDER BY PROY_ID」,MRAProyecto);閱讀http://www.oracle.com/technetwork/articles/vasiliev-jpql-087123.html中的利用本機SQL查詢部分。但基本上你應該使用第二個參數來定義完全合格的實體類 – Koitoer

+0

這是不可能的,編譯器給我一個錯誤。我添加一個快照:http://imagizer.imageshack.us/v2/800x600q90/203/zbcj.jpg – user3118887