我在读取List的值时遇到问题。我有这段代码:
Query<User> qr=ds.createQuery(User.class).field("UserID").equal(52005);
List<User> l=qr.asList();
Iterator i=l.iterator();
System.out.println(i.next().toString());
我有一个列表l
此列表中填充了对数据库的查询(返回带有UserID 52005的记录)。如果我打印l
的大小,我可以看到正确的值(1),因为有一个值为52005的UserID,但我现在的问题是我无法读取此列表的内容。如果我使用上面的代码,我会看到其他我想要的东西,即Untersuchungsraum.User@88c615
它似乎是编码的,Untersuchungsraum
是包的名称,User
是我的POJO类的名称。
这是我的Pojo:
@Entity("Users")
public class User {
@Id private String id;
private String City;
private int UserID;
/**
* @return the city
*/
public String getCity() {
return City;
}
/**
* @param city the city to set
*/
public void setCity(String city) {
this.City = City;
}
...
如何在此情况下访问我的列表值?如何在列表中查看城市值l
答案 0 :(得分:6)
问题不在于列表或迭代器,而是您处理User
的方式。当你跑:
System.out.println(i.next().toString());
它会调用未被覆盖的User#toString()
,因此它实际上会调用Object#toString
。这给了你那个东西。使用:
System.out.println(i.next().getCity());
答案 1 :(得分:0)
您需要的只是list.get(0).getCity()
答案 2 :(得分:0)
Query<User> qr=ds.createQuery(User.class).field("UserID").equal(52005);
List<User> l=qr.asList();
if(l!=null && l.size()>0){
User user = l.get(0);
System.out.println(user.getCity());
System.out.println(user.getUserID());
}