将列表<object>转换为ArrayList </object>

时间:2013-12-05 19:25:51

标签: java hibernate list arraylist casting

我发错了。

我的控制台错误是:

  

java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为modelAjax.ModeloAjax

我的代码是:

DAO

public List<ModeloAjax> findByMarca(Long marca) {

    Session s = sf.getCurrentSession();

    Query q = s.createQuery("select id, nombre from "+getEntityName()+" where marca_id="+marca);

    List<?>modelos = q.list();

    List<ModeloAjax> result = new ArrayList<ModeloAjax>(modelos.size());

    for(Object o : modelos){
        result.add((ModeloAjax) o);
    }




    return result;
}

我该怎么做才能解决错误?

2 个答案:

答案 0 :(得分:1)

您正在将Object []投射到ModeloAjax。此数组包含2项id和nombre项目。

您需要像这样编码:

Query q = s.createQuery("select e from " + getEntityName() + " e where e.marca_id = " + marca);

注意:您想保留您的查询。你必须这样做:

for(Object o : modelos ) {
    Object[] record = (Object[])o;
    // record[0] = id
    // record[1] = nombre

    // Convert record to ModeloAjax
}

答案 1 :(得分:1)

Query q = s.createQuery("select id, nombre from "+getEntityName()+" where marca_id="+marca).addEntity(ModeloAjax.class);

将返回ModeloAjax对象列表中的db值。