我正在用数据库编写程序。
我使用org.hibernate.Query
对象查询数据库以从中获取一个项目。
我需要将此项的内容设置为JTextField
组件的值。
问题在于,我不知道如何将java.util.List
项转换为String
个setText(getCodeOfSub(String nameOfTheSubj))
方法,我可以使用public String getCodeOfSub(String nameOfTheSubj){
Session session = Service.getSession();
org.hibernate.Query query = session.createQuery("SELECT subject.subjectCode, subject.name " +
"FROM SubjectEntity subject WHERE subject.name="+"'"
+nameOfTheSubj+"'");
java.util.List results = query.list();
if(!results.isEmpty()) {
return String.valueOf(results.get(0));
}
session.close();
return null;
}
方法:
{{1}}
答案 0 :(得分:2)
调用org.hibernate.Query#list
时会得到的是List<Object[]>
,意思是行列表,其中每行将保存一个对象表示,但在您的情况下,它将是一个包含两个项目的数组< em> subject.code 和 subject.name 。
所以从本质上讲,results.get(0)
会返回Object[]
,其中:
results.get(0)[0]
- &gt; subject.code results.get(0)[1]
- &gt; subject.name 因此,在调用String.valueOf(results.get(0))
时,您将尝试获取对象数组的字符串表示形式,这将不是您所期望的...不同的项目以某种方式分离但将是原始的数组后跟哈希表示。
使用项toString
方法获取项目表示的最简单方法是使用静态实用程序Arrays.asList(Object[])
,即:
//...
return String.valueOf(Arrays.asList(results.get(0)));
//...
此处列出了关于集合的toString
方法的内容:
返回指定内容的字符串表示形式 阵列。字符串表示由数组列表组成 元素,用方括号括起来(“[]”)。相邻的元素是 由字符“,”(逗号后跟空格)分隔。 通过String.valueOf(int)将元素转换为字符串。返回 如果a为null,则为“null”。
为了更好地展示您的商品,您可能需要使用某种实用方法手动处理它们......我建议使用Joiner
from google-collections library。