使用TypedQuery <entity>填充JComboBox不会显示实体名称正确

时间:2017-10-26 05:45:25

标签: java arrays database jpa objectdb

我希望在此返回列表中获取每个对象的名称,但输出是Object []的数组,并在我的JComboBox控件中显示entitys.Categoria [id = 1]。

我不明白这一点。请帮我!这是我的代码:

public List<Categoria> consultarCategorias() {
    try {            
        TypedQuery<Categoria> q = 
                em.createQuery("select c from Categoria c", Categoria.class);
            List<Categoria> results = q.getResultList();            
            return results;
    } catch (Exception e) {
        return null;
    }
}

注意:我用这个

for (Categoria c : results) {
   System.out.println(c.getName());
}    

并且不起作用,这显示结果无法转换为Categoria

这是填充我的JComboBox的代码:

public void fillCmbCategorias() {
   cmbCategoria.removeAllItems();
   try {
      Object[] listaCategorias = crud.consultarCategorias().toArray();
      DefaultComboBoxModel dcb = new DefaultComboBoxModel(listaCategorias);
      cmbCategoria.setModel(dcb);
   } catch (Exception e) {
      JOptionPane.showMessageDialog(null
              ,"No se pudo cargar la lista de categorias. " + e.getMessage());
   }
}

3 个答案:

答案 0 :(得分:0)

你能尝试像这样投射:

List<Categoria> results = (List<Categoria>)q.getResultList();  `

答案 1 :(得分:0)

我只能想象您已将result声明为某些超级类型列表,例如List<?>List<Object>

假设您可以为consultarCategorias()确定返回值。

当然你不应该这样做 - 你应该更正列表泛型类型 - 但这可能会起作用:

for (Object c : results) {
   System.out.println(((Categoria)c).getName());
}

更新(添加问题代码后):

你的问题似乎是这样:

Object[] listaCategorias = crud.consultarCategorias().toArray();
我怀疑是

尝试

Categoria[] listaCategorias =
   crud.consultarCategorias().toArray(new Categoria[]{});
// toArray() needs some array instance to determine the type

关于List并转换为Array,请点击此处Convert list to array in Java

答案 2 :(得分:0)

你的意思是:

public List<String> consultarCategorias() {
       //    ^^-------------------return a list of Strings
    try {
        TypedQuery<Categoria> q = em.createQuery("select c.name from Categoria c");
        //--------------------get only the names--------^^
        List<String> listName = q.getResultList();
        //    ^^-------------------------------------List of names(Strings)
        return results;
    } catch (Exception e) {
        return null;
    }
}