Я столкнулся со странной проблемой с 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):