java.util.List元素到字符串Java

时间:2015-05-23 15:42:17

标签: java hibernate

我正在用数据库编写程序。

我使用org.hibernate.Query对象查询数据库以从中获取一个项目。

我需要将此项的内容设置为JTextField组件的值。

问题在于,我不知道如何将java.util.List项转换为StringsetText(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}}

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