初始化hibernate实体的关联时出现Nullpointer异常

初始化hibernate实体的关联时出现Nullpointer异常,hibernate,tomcat7,Hibernate,Tomcat7,嗨,我有一个实体模型,它有一个复合键和关联的对象。下面是它的hbm.xml <hibernate-mapping> <class name="com.mytrits.admin.Mtmdmsgqna" table="mtmdmsgqna" catalog="mtmdadmin"> <composite-id name="id" class="com.mytrits.admin.MtmdmsgqnaId"> <key-propert

嗨,我有一个实体模型,它有一个复合键和关联的对象。下面是它的hbm.xml

<hibernate-mapping>
<class name="com.mytrits.admin.Mtmdmsgqna" table="mtmdmsgqna" catalog="mtmdadmin">
    <composite-id name="id" class="com.mytrits.admin.MtmdmsgqnaId">
        <key-property name="messageId" type="int">
            <column name="MessageId" />
        </key-property>
        <key-property name="qserialNo" type="java.lang.Integer">
            <column name="QSerialNo" />
        </key-property>
        <key-property name="qsenderId" type="java.lang.Integer">
            <column name="QSenderID" />
        </key-property>
        <key-property name="qtext" type="string">
            <column name="QText" length="1000" />
        </key-property>
        <key-property name="aserialNo" type="java.lang.Integer">
            <column name="ASerialNo" />
        </key-property>
        <key-property name="asenderId" type="java.lang.Integer">
            <column name="ASenderID" />
        </key-property>
        <key-property name="atext" type="string">
            <column name="AText" length="1000" />
        </key-property>
    </composite-id>
    <many-to-one name="mtmduser" class="com.mytrits.admin.Mtmduser" update="false" insert="false" fetch="select">
        <column name="QSenderID" />
    </many-to-one>
    <many-to-one name="mtmdmessages" class="com.mytrits.admin.Mtmdmessages" update="false" insert="false" fetch="select">
        <column name="MessageId" not-null="true" />
    </many-to-one>
</class>
我在项目的另一部分有一个类似的案例,但是在那里没有类似代码的问题。我不确定这里的问题是什么。我还尝试了以下方法进行迭代,但遇到了相同的问题

/*          
        for (Mtmdmsgqna mqna : qnaList) {
            Hibernate.initialize(mqna);
            Hibernate.initialize(mqna.getId());
            Hibernate.initialize(mqna.getMtmduser());
        }
*/

/*
对于(int i=0;i
*/

我怀疑,因为复合键本身是一个独立的类,所以它不会被提取(如Lazy='true'),而且除了多对一之外,我没有任何其他元素,所以没有任何东西是迫切需要提取的。因此,即使数据库中有数据,对象也是空的。由于主实体对象本身为null,因此我无法进一步浏览相关对象进行初始化。我想我至少要急切地获取复合id数据。我是冬眠新手,无法找到在hbm文件中的复合键上设置lazy-eager属性的方法。如果可能的话,请告诉我。如果还有其他问题,请告诉我。任何帮助都会很好

private void buildQATree() {
    try {
        MtmdmsgqnaHome qnasHome = new MtmdmsgqnaHome();
        HibernateUtil.beginTransaction();
        qnaList = qnasHome.findQNAbyMsg(messageId.intValue());
        Iterator it = qnaList.iterator();
        while (it.hasNext()) {
            Mtmdmsgqna mqna = (Mtmdmsgqna) it.next();
            mqna.getId().getMessageId();
            System.out.println("Success");
        }
        HibernateUtil.commitTransaction();
    } catch (Exception ex) {
        if (HibernateUtil.isTransactionActive()) HibernateUtil.rollbackTransaction();
        log.error("Exception fetching Entity Types"+ex);
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error Getting Message Detail", "Error Getting Message Detail"));          
    }               
}
/*          
        for (Mtmdmsgqna mqna : qnaList) {
            Hibernate.initialize(mqna);
            Hibernate.initialize(mqna.getId());
            Hibernate.initialize(mqna.getMtmduser());
        }
/*
        for (int i = 0; i < qnaList.size(); i++) {
            Hibernate.initialize(qnaList.get(i));
            Hibernate.initialize(qnaList.get(i).getId());
            Hibernate.initialize(qnaList.get(i).getMtmduser());
        }