我有以下Java代码;
List<Person> personList = new ArrayList<Person>();
response = executeQuery(query);
for(Object[] person : response.getRecords()) {
Person per = new Person();
per.setPersonName((String)person[0]);
//Setting other values
personList.add(per);
}
正如您所看到的,我从查询执行中获得响应并获取一个我想在自定义类Person
中设置的对象数组。
我在Person
;
public void setPersonName(String personName) {
this.personName = personName;
}
现在发生了一些奇怪的事情。我正确地得到了响应并在调试时,如果我检查/观察person[0]
,它会给我正确的值test1
但是当我做per.setPersonName((String)person[0]);
将personName
设为null
我已验证personName
的{{1}}类型。
如果我做错了,请告诉我。
答案 0 :(得分:0)
我从查询执行中获得响应并获取对象数组 我试图在我的自定义类Person中设置。
如果你的循环返回Object[]
而不是循环应该像
for(Object obj : response.getRecords()) {
Person per = new Person();
per.setPersonName(/*parse obj to get pserson name*/);
personList.add(per);
}
答案 1 :(得分:0)
由于您尚未发布response.getRecords()方法的代码,我无法确定,但这可能是问题所在:
如果使用JDBC检索记录,则需要在访问行之前调用ResultSet.next()
,因为ResultSet游标最初位于第一行之前;对方法的第一次调用使得第一行成为当前行;第二个调用使第二行成为当前行,依此类推。