在Struts2动作类中使用Hibernate获取列名时出现NullPointerException

时间:2018-03-20 07:51:27

标签: hibernate nullpointerexception

我正在尝试使用以下代码获取通过hibernate配置生成的所有列名:

ClassMetadata classMetadata = sessionFactory.getClassMetadata(PersistenceClassName.class);
String[] propertyNames = classMetadata.getPropertyNames();

我收到以下异常:

根本原因:

java.lang.NullPointerException
    PersistenceClass<init>

例外:

Unable to instantiate Action

我尝试实现ModelDriven接口,但仍然是相同的例外。

@Override // by implementing model driven interface
public Object getModel() {
    // TODO Auto-generated method stub
    return ddObj;
}

这是我尝试使用ModelDriven

的方法
PersistenceClassName PersistenceClassObj= new PersistenceClassName();
List<PersistenceClassName> PersistenceClassList=new ArrayList<PersistenceClassName>();

Object entityName = getModel();
ClassMetadata hibernateMetadata = sessionFactory.getClassMetadata(entityName.getClass());

我无法理解如何解决它。我哪里错了?

1 个答案:

答案 0 :(得分:0)

PersistenceClass的构造函数中抛出异常。如果从中删除导致NullPointerException的代码,那么Struts将能够通过其对象工厂实例化一个动作类。

如果代码试图在未初始化的变量上调用方法,则会动态抛出异常。

在您的代码中,此变量可以是sessionFactory。如果Hibernate无法构建会话工厂,则返回null引用。