表结构
父表 sheme
子表 sheme_item 在映射文件里 sheme.java 中有 private List<SchemeItem> schemeItems;
子表与父表是N对1关系 ,并且无不关联的记录为什么用关于getHibernateTemplate().loadAll(sheme.class) 在schemeItems会有NULL 

解决方案 »

  1.   

    做的是单向一对多关联?
    父中没有子 那么得到记录 schemeItems就应该是 null
      

  2.   

    这两个表之间有没有建立主健与外健的关系?
    如果没有建立,当主表被删除后,剩下子表,那么子表的这个schemeItems可以插入null这种设计表的结构时最好做约束,否则表中会存在非法数据
      

  3.   

    是一对多关系,父中肯定有schemeItem记录,主要是 List <SchemeItem> schemeItems 这里面会有几个SchemeItem对象,其中有1个或几个是NULL,不知道原因了?比如查数据表sheme_item,有2条记录跟sheme关联,但是用getHibernateTemplate().loadAll(sheme.class)方法后,List <SchemeItem> schemeItems会有3个SchemeItem对象,多出来的就是NULL,请教这是怎么回事?
      

  4.   

    看看你写的。HBM。XML文件中怎么设置的吧。
      

  5.   

     <many-to-one name="parent" class="com.auxgroup.sxamr.model.domain.Scheme">
          <column name="PARENT_ID" not-null="false">
            <comment>上级方案</comment>
          </column>
        </many-to-one>
        <set lazy="false" inverse="false" cascade="all" order-by="SITUATION, ORDER_NO" name="children">
          <key column="PARENT_ID"/>
          <one-to-many class="com.auxgroup.sxamr.model.domain.Scheme"/>
        </set>
        <list table="SCHEME_ITEM" lazy="false" inverse="false" cascade="all" name="schemeItems">
          <key column="SCHEME_ID" not-null="true"/>
          <list-index column="RANK"/>
          <one-to-many class="com.auxgroup.sxamr.model.domain.SchemeItem"/>
        </list>
    XML里是这么写的
      

  6.   

    我觉得这个loadAll()方法和load()方法一样,Hibernate会先去查缓存,如果没有再去查数据库,网上有loadAll的源码,我没耐心看,你可以搜下。你有没有试过写HQL查询看是不是null!?