2013-10-28 20 views
0

從來就與查詢多個內部連接,因此它完美的作品時,我對MySQL工作臺運行它,但是當我運行我的應用程序得到:javax.el.E​​LException:java.lang.ClassCastException:

Advertencia: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.proximate.dto.OriginadorDetalleDTO 

javax.el.E​​LException:java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲com.proximate.dto.OriginadorDetalleDTO

這裏是我的方法執行查詢:

@Override 
public List<OriginadorDetalleDTO> getOriginadorDetalles(OriginadorDTO originador) throws DAOException { 
    Query query = getSessionFactory().getCurrentSession().createSQLQuery("SELECT COUNT(*) as NUM_GESTORES_ACTIVOS, M.ME_CVE_MSJ, " + 
    " M.ME_DESCRIP, J.GESTORES_PERMITIDOS \n" + 
    " FROM gestores G \n" + 
    " INNER JOIN usuarios U ON G.ID_SUPERVISOR = U.id\n" + 
    " INNER JOIN mensajerias M ON U.ID_ORGANIZACION = M.ME_CVE_MSJ\n" + 
    " INNER JOIN originadores O ON O.ID_SIAM = M.ME_CVE_CLIENTE\n" + 
    " INNER JOIN mensajerias_gestores J ON J.ME_CVE_MSJ = M.ME_CVE_MSJ\n" + 
    " WHERE U.ID_NIVEL = 4\n" + 
    " AND ID_SIAM = :idSiam\n" + 
    " GROUP BY M.ME_CVE_MSJ, M.ME_DESCRIP, J.GESTORES_PERMITIDOS"); 
    query.setParameter("idSiam", originador.getIdSIAM()); 
    List<OriginadorDetalleDTO> list = query.list(); 
    return list; 
} 

,這裏是我的豆:

public class OriginadorDetalleDTO { 
    private String idMensajeria; 
    private String descMensajeria; 
    private int numGestores; 
    private int numGestoresActivos; 

    public String getIdMensajeria() { 
     return idMensajeria; 
    } 

    public void setIdMensajeria(String idMensajeria) { 
     this.idMensajeria = idMensajeria; 
    } 

    public String getDescMensajeria() { 
     return descMensajeria; 
    } 

    public void setDescMensajeria(String descMensajeria) { 
     this.descMensajeria = descMensajeria; 
    } 

    public int getNumGestores() { 
     return numGestores; 
    } 

    public void setNumGestores(int numGestores) { 
     this.numGestores = numGestores; 
    } 

    public int getNumGestoresActivos() { 
     return numGestoresActivos; 
    } 

    public void setNumGestoresActivos(int numGestoresActivos) { 
     this.numGestoresActivos = numGestoresActivos; 
    } 

} 

有誰知道爲什麼我得到那個錯誤? 在此先感謝。

回答

0

當您致電query.list()時,它會根據您的查詢返回一個Object[]的列表,但由於您正在(隱式地)投射到List<OriginadorDetalleDTO>,因此會拋出異常。也許您是在ResultTransformer之後才能從您的查詢中獲得List<OriginadorDetalleDTO>

相關問題