2013-11-21 3 views
0

У меня есть следующий код Java;Проблема 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, который является String.

Пожалуйста, дайте мне знать, если я делаю что-то неправильно.

+0

Показать ваш запрос. Давайте посмотрим на запрос, чтобы мы могли понять прогнозы в вашем запросе. –

+0

Возвращает ли ваш запрос список объектов []? – Adarsh

+0

После цикла, вы видите personName для null в объекте person ?. Код выглядит правильно. – Jayasagar

ответ

0

Я получаю ответ от выполнения запроса и получаю массив объектов , который я пытаюсь установить в своем пользовательском классе Person.

Если обратный цикл Object[] чем петля должна быть как

for(Object obj : response.getRecords()) { 
     Person per = new Person(); 
     per.setPersonName(/*parse obj to get pserson name*/); 

     personList.add(per); 
} 
+0

Нет, он будет возвращать Object [] not object.It означает List , если у нас есть проекции в нашем запросе. –

+0

Если он возвращает 2D-объект, это будет выглядеть так: 'for (Object []: ...)' – Masudul

+0

Я не понимаю, что он спрашивает, какой api он использует. Он спящий или jdbc –

0

Поскольку вы не разместили код для response.getRecords() метод, я не могу быть уверен, но это может Проблема заключается в следующем:

Если вы используете JDBC для извлечения записей, вам нужно позвонить ResultSet.next(), прежде чем вы получите доступ к строкам, потому что курсор ResultSet изначально расположен перед первой строкой; первый вызов метода next делает первую строку текущей строкой; второй вызов делает вторую строку текущей строкой и так далее.