我希望在此返回列表中获取每个对象的名称,但输出是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());
}
}
答案 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;
}
}