Вопрос о сопоставлении списка гибернации

#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>();