Fir*_*rre 5 java null hibernate nullpointerexception javassist
我遇到了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;
}
Run Code Online (Sandbox Code Playgroud)
这是自定义的findByID:
public <C> C findByID(Class<C> class, PK id) {
return (C) getHibernateTemplate().get(class, id);
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我有一个存储在数据库中的ResolvedTicket,当我在第一个片段中调用findByID()时,第一行返回一个包含空值的对象.它看起来像一个代理对象,但它很奇怪,因为每当我尝试调用它的任何getter时,我都会得到一个NullPointerException,这很奇怪,因为在测试t == null时该对象不为null.
这是调用getHibernateTemplate().get(ActiveTicket.class,id)时对象的外观: