Метод Get HibernateTemplate возвращает объект с нулевыми значениями - PullRequest
0 голосов
/ 20 декабря 2018

Я столкнулся со странной проблемой с Hibernate.Есть две таблицы базы данных, в которых хранятся активные и разрешенные заявки.В Java есть суперкласс (Ticket) и подклассы сущностей (ActiveTicket и ResolvedTicket).

Теперь, когда билет разрешен, он перемещается в таблицу ResolvedTicket.

Теперь у меня есть пользовательскийМетод findByID, где я пытаюсь сначала получить активный тикет, а затем, если у меня есть нулевой объект, я пытаюсь получить разрешенный тикет.Это выглядит так:

public Ticket findByID(Long id) {
    Ticket t = findByID(ActiveTicket.class, id);
    if (null == t) {
        t = findByID(ResolvedTicket.class, id);
    }
    return t;
}

Это пользовательский findByID:

public <C> C findByID(Class<C> class, PK id) {
    return (C) getHibernateTemplate().get(class, id);
}

В моем примере у меня есть ResolvedTicket, хранящийся в базе данных, когда я вызываю findByID () впервый фрагмент, первая строка возвращает объект, который содержит нулевые значения.Он выглядит как прокси-объект, но это очень странно, потому что всякий раз, когда я пытаюсь вызвать любой из его получателей, я получаю исключение NullPointerException, что странно, потому что объект не равен нулю при тестировании t == null.

Этокак выглядит объект при вызове getHibernateTemplate (). get (ActiveTicket.class, id): enter image description here

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Проблема была с версией Hibernate.После обновления до более поздней версии Hibernate проблема исчезла.

0 голосов
/ 06 января 2019

Так как, по моему мнению, некоторые соответствующие фрагменты кода отсутствуют, мой лучший гость, это то, что у вашего Ticket / ActiveTicket / ResolvedTicket есть получатели с последним ключевым словом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...