#java #hibernate #list
#java #гибернация #Список
Вопрос:
Я знаю, что этот код довольно запутанный. Копирование извлечения одного списка в другой, я почти уверен, не самое элегантное из решений. Однако я просто хочу разобраться, почему это не работает.
Это метод гибернации для запроса базы данных и возврата элементов в списке. то есть список исправлений. Из этого мне нужна только строка FixString, которую я хочу использовать для заполнения списка fixString.
Однако по неизвестной мне причине. всякий раз, когда я вызываю
try {
//Get all the Fix Strings stored in db
fixStrings = HibFunction.listFix();
} catch (Exception e) {
System.out.printf("Cannot get Fix strings",e);
}
Мой junit завершается с ошибкой, выдавая мне консольную распечатку
1 строка
Не удается получить строки исправления
И ошибка трассировки NullPointer…
Почему это значение равно нулю, несмотря на возможность распечатать результат?
public static List<String> listFix()
{
List <String> fixString = null;
List fix = null;
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
fix = session.createQuery("from metadataPoC.hib.TestHib").list();
for (Iterator iterator = fix.iterator(); iterator.hasNext();)
{
TestHib fixtable = (TestHib) iterator.next();
System.out.println("****************************************************");
System.out.println("****************************************************");
System.out.println(fixtable.getFixString());
System.out.println("****************************************************");
System.out.println("****************************************************");
fixString.add(fixtable.getFixString());
}
transaction.commit();
} catch (HibernateException e) {
transaction.rollback();
e.printStackTrace();
} finally {
session.close();
}
return fixString;
}
Ответ №1:
При быстром просмотре вашего кода кажется, что вы не инициализируете
List <String> fixString
правильно. При вызове метода для него будет null. Итак, вместо
List <String> fixString = null;
инициализируйте список, например,
List <String> fixString = new ArrayList<String>();