0

複数の内部結合を含むクエリを作成したので、mysql ワークベンチで実行すると完全に機能しますが、アプリケーションを実行すると次のようになります。

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;
    }

}

なぜそのエラーが発生するのか誰かが知っていますか?? 前もって感謝します。

4

1 に答える 1

0

呼び出すquery.list()と、クエリに応じたリストが返されObject[]ますが、(暗黙的に) キャストしているためList<OriginadorDetalleDTO>、例外がスローされます。おそらく、クエリから aResultTransformerを取得したい場合がありList<OriginadorDetalleDTO>ます。

于 2013-10-29T00:41:46.970 に答える