java - 使用 TypedQuery<Entity> 填充 JComboBox 不会显示正确的实体名称

标签 java arrays database jpa objectdb

我想获取此返回列表中每个对象的名称,但输出是一个 Object[] 数组,并且这在我的 JComboBox 控件中显示实体.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());
}    

并且不起作用,这表明结果无法转换为类别

这是填充我的 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());
   }
}

最佳答案

我能想象的唯一原因是您已声明 result作为一些 super 类型列表,例如 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 s 并转换为 Array在这里查看更多信息 Convert list to array in Java

关于java - 使用 TypedQuery<Entity> 填充 JComboBox 不会显示正确的实体名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946668/

相关文章:

php - 尝试从当前选定的数据中检索名称

Java 抛出 NoSuchElementException

java - 为什么在空引用上调用方法可以成功编译?

java - 实现堆栈时 ArrayList 与 ArrayDeque 的性能对比

php - 创建具有随机值 PHP 的关联数组

sql - MySQL : how to load data with fixed-row format into user variables

java - 为什么 java 接口(interface)返回自身 <java.nio.file.Path>

ruby - 从数组ruby删除所有元素并引发错误

java - 跟踪多个数组列表

Python 正确的存储数据的方法