java - HibernateTemplate Get 方法返回具有空值的对象

标签 java hibernate nullpointerexception null javassist

我在使用 Hibernate 时遇到了一个奇怪的问题。有两个数据库表存储 Activity 和已解决的工单。在 Java 中有父类(super class) (Ticket) 和实体子类 (ActiveTicket 和 ResolvedTicket)。

现在,当工单被解决后,它会被移动到 ResolvedTicket 表中。

现在我有一个自定义的 findByID 方法,我尝试首先检索 Activity 票证,然后如果我有一个空对象,那么我尝试检索已解决的票证。它看起来像这样:

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() 时,第一行返回一个包含空值的对象。它看起来像一个代理对象,但它很奇怪,因为每当我尝试调用它的任何 getter 时,我都会得到一个 NullPointerException,这很奇怪,因为在测试 t == null 时该对象不是 null。

这是调用 getHibernateTemplate().get(ActiveTicket.class, id) 时对象的样子: enter image description here

最佳答案

由于恕我直言,一些相关的代码片段丢失了,我最好的客人是你的 Ticket/ActiveTicket/ResolvedTicket 有带有 final 关键字的 getter。

关于java - HibernateTemplate Get 方法返回具有空值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870949/

相关文章:

java - 2 在同一函数中返回触发?

java - Spring,Hibernate with mysql 图像显示不正确

java - EJB 重写 JPA javax.persistence

java - 在 Activity 中访问 Fragment 的 textView 时出现 NullPointerException

java - 什么是 NullPointerException,我该如何解决?

Java编译错误: Cannot Find Symbol for BufferedReader

java - 在 ANTLR 中处理 EOF、空格和换行符

java - AlertDialog.Builder 错误

mysql - Hibernate 和 MySQL,导入存储过程

JavaFX - 尝试将功能添加到启动功能时出错