使用 TypedQuery<Entity> 填充 JComboBox 未正确显示实体名称
Populating JComboBox with TypedQuery<Entity> does not show Entitys name correct
我想获取此 return 列表中每个对象的名称,但输出是一个 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());
}
无效,此显示结果无法转换为类别
这是填充我的 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());
}
}
你能试试这样投射吗:
List<Categoria> results = (List<Categoria>)q.getResultList(); `
我能想到的唯一原因是您已将 result
声明为某种超类型列表,例如 List<?>
或 List<Object>
.
假设您可以将 consultarCategorias()
的 return 值赋给它。
当然你不应该这样做——你应该更正列表通用类型——但这可能会奏效:
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
s 在此处查看更多信息 Convert list to array in Java
我想获取此 return 列表中每个对象的名称,但输出是一个 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());
}
无效,此显示结果无法转换为类别
这是填充我的 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());
}
}
你能试试这样投射吗:
List<Categoria> results = (List<Categoria>)q.getResultList(); `
我能想到的唯一原因是您已将 result
声明为某种超类型列表,例如 List<?>
或 List<Object>
.
假设您可以将 consultarCategorias()
的 return 值赋给它。
当然你不应该这样做——你应该更正列表通用类型——但这可能会奏效:
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
s 在此处查看更多信息 Convert list to array in Java