Вопрос о отображении списка гибернации - PullRequest
0 голосов
/ 16 мая 2011

Я знаю, что этот код довольно грязный.Копирование извлечения одного списка в другой, я уверен, что это не самое элегантное решение.Однако я просто хочу выяснить, почему это не работает.

Это метод гибернации для запроса базы данных и возврата записей в списке.т.е. список исправлений.Из этого я хочу только 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);
    }

Мой джунт не срабатывает, давая мне консольную распечатку



1 строка



Не удается получить исправлениеstrings

И трассировка ошибки 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 Ответ

3 голосов
/ 16 мая 2011

Быстро просматривая код, кажется, вы неправильно инициализируете

List <String> fixString

.Он будет нулевым, когда вы вызовете метод для него.Так что вместо

List <String> fixString = null;

инициализируйте список, например,

List <String> fixString = new ArrayList<String>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...