如何从List (Java)获取数据?

我是Java新手,在显示对象列表中的数据方面存在问题。 我有一个简单的方法,它应该跨多个表收集数据并将其返回给我的控制器:

public List getHouseInfo(){ Query q = em.createNativeQuery("SELECT houses.id, addresses.country, addresses.region, house_details.rooms, house_details.square FROM houses, addresses, house_details"); List myList = q.getResultList(); return myList;} 

现在我想在控制器中获取这些数据,但我不知道如何从列表中获取单个结果。 我试着这样做:

 List list = getHouseInfo(); for (int i=0; i<list.size; i++){ System.out.println("Element "+i+list.get(0));} 

但我只得到对这个对象的引用(例如[Ljava.lang.Object; @ 167a47b)。 我也试过使用Iterator,但结果是一样的。 我试着使用这样的代码:

 List list = getHouseInfo(); for (int i=0; i<list.size; i++){ System.out.println("Element "+i+list.get(0)[0]);} 

但它也没有帮助我 – 这以编译错误结束。

有人能告诉我如何从这个列表中获取’id’(整数值)吗? 我在我的’View’中使用MyFaces,我有一个这样的代码(houseControll是我的JSF Managed Bean的名称 – 控制器):

  ...  ...  

此代码正确显示’id’值 – 我有1,2,3,…值。 如何在控制器中获得相同的结果? 如何在控制器中打印数据?

对于初学者,你没有正确地迭代结果列表,你根本就没有使用索引i。 尝试这样的事情:

 List list = getHouseInfo(); for (int i=0; i 

看起来这个查询会重新命名一个对象数组列表,因为数组不是覆盖toString的正确对象,你需要先进行强制转换然后再使用Arrays.toString()。

  List list = getHouseInfo(); for (int i=0; i 


这样做

 List list = HQL.list(); // get your lsit here but in Object array 

您的查询是:“SELECT houses.id,addresses.country,addresses.region,…”

 for(Object[] obj : list){ String houseId = String.valueOf(obj[0]); // houseId is at first place in your query String country = String.valueof(obj[1]); // country is at second and so on.... ....... } 

通过这种方式,您可以轻松获得混合对象,但您应该事先知道您获得的值是什么,或者您可以通过打印要知道的值来检查。 对不起英语不好,希望对你有所帮助

 System.out.println("Element "+i+list.get(0));} 

应该

 System.out.println("Element "+i+list.get(i));} 

要使用JSF标记,请为dataList值属性提供对元素列表的引用,并且var属性依次是该列表的每个元素的本地名称。 在dataList中,您使用对象的属性(getters)来输出有关该单个对象的信息:

  ...  ...  

你应该尝试这样的事情

 List xx= (List) list.get(0) String id = (String) xx.get(0) 

或者如果你有一个House值对象,那么查询的结果是相同的类型

 House myhouse = (House) list.get(0);