我想获取此返回列表中每个对象的名称,但输出是一个 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/