有关返回集合的错误

原创 2007年10月09日 21:22:00

有两个表,表一是记录病人退出资料,名字EXITMT;表二记录病人电子病历资料,名字EHRMT。两者是多对一的关联关系。

在EhrMt.hbm.xml映射文件中有如下代码:

<set inverse="true" lazy="true" name="exitMts">
<key column="EHR_ID" />
<one-to-many class="ExitMt" />
</set>

ExitMt.hbm.xml映射文件中有如下代码:

<many-to-one
name="ehr"
column="EHR_ID"
class="EhrMt"
not-null="true"
>
</many-to-one>
 
 

其中Set<ExitMt> set=mt.getExitMts();返回的set,其size=0!
而如果我加入以下代码:
Set<AdmissionHistoryMt> set1=mt.getAdmissionHistoryMts();
         System.err.println("返回set1 的size="+set1.size());
则返回的set1.size()=1;
也就是说,exitMts这个变量的定义有点问题?
 

要说明的是,mt数据类型为EhrMt,BaseEhrMt.java中有如下方法:

private java.util.Set<com.cdms.dataaccess.model.ExitMt> exitMts;
private java.util.Set<com.cdms.dataaccess.model.AdmissionHistoryMt> admissionHistoryMts;

    
/** *//**
     * Return the value associated with the column: exitMts
     
*/

    
public java.util.Set<com.cdms.dataaccess.model.ExitMt> getExitMts () ...{
        
return exitMts;
    }


    
/** *//**
     * Set the value related to the column: exitMts
     * 
@param exitMts the exitMts value
     
*/

    
public void setExitMts (java.util.Set<com.cdms.dataaccess.model.ExitMt> exitMts) ...{
        
this.exitMts = exitMts;
    }


    
public void addToexitMts (com.cdms.dataaccess.model.ExitMt exitMt) ...{
        
if (null == getExitMts()) setExitMts(new java.util.TreeSet<com.cdms.dataaccess.model.ExitMt>());
        getExitMts().add(exitMt);
    }


/** *//**
     * Return the value associated with the column: admissionHistoryMts
     
*/

    
public java.util.Set<com.cdms.dataaccess.model.AdmissionHistoryMt> getAdmissionHistoryMts () ...{
        System.err.println(
"返回admissionHistoryMts="+admissionHistoryMts.size()+" "+admissionHistoryMts.isEmpty()+" "+admissionHistoryMts);
        
return admissionHistoryMts;
    }


    
/** *//**
     * Set the value related to the column: admissionHistoryMts
     * 
@param admissionHistoryMts the admissionHistoryMts value
     
*/

    
public void setAdmissionHistoryMts (java.util.Set<com.cdms.dataaccess.model.AdmissionHistoryMt> admissionHistoryMts) ...{
        
this.admissionHistoryMts = admissionHistoryMts;
    }


    
public void addToadmissionHistoryMts (com.cdms.dataaccess.model.AdmissionHistoryMt admissionHistoryMt) ...{
        
if (null == getAdmissionHistoryMts()) setAdmissionHistoryMts(new java.util.TreeSet<com.cdms.dataaccess.model.AdmissionHistoryMt>());
        getAdmissionHistoryMts().add(admissionHistoryMt);
    }

 
为什么mt.size()=0呢?mt对象是没问题的,测试语句能够打印出正确的信息!
业务层分别对应ExitHistory.java以及Ehr.java.
 
有如下一段代码:
public ExitMt getExitMt(EhrMt ehr)
...{
    Session s 
= DAOHelper.createNewSession();
    EHR e 
= (EHR) DAOHelper.load(EHR.class, ehr.getId(), s);
    EhrMt mt 
= (EhrMt) e.getTarget();

    
/**//* 测试mt对象 */
    System.err.println(
"mt.getAddress()="+mt.getAddress());
    System.err.println(
"mt.getBloodTypeCode()="+mt.getBloodTypeCode());
    System.err.println(
"mt..getExEhrNO()="+mt.getExEhrNO());

    Set
<ExitMt> set=mt.getExitMts();
    System.err.println(
"返回set 的size="+set.size());
    ExitMt em
=null;
    List
<ExitMt> list=null;
    
try
    
...{
        
for (Iterator iter = set.iterator(); iter.hasNext();)
        
...{
            list.add((ExitMt)iter.next());            
        }

    }

    
catch(Exception ex)
    
...{
        ex.printStackTrace();
    }

    em
=list.get(0);
    System.err.println(
"返回em="+em);
    DAOHelper.closeSession(s);
    
return em;    
}
 

示例:递归返回集合的几种方式

用途:整理递归返回集合的几种写法 1、利用添加返回集合递归 /// 获取当前文件夹下所有匹配的文件 public static List GetAllFile(thi...
  • u010975589
  • u010975589
  • 2017年03月22日 14:21
  • 862

hibernate通过query查询返回实体集合相关注意事项

Output实体: import javax.persistence.*; import java.util.Date; @Entity @Table(name = "Output") public...
  • ithouse
  • ithouse
  • 2014年08月12日 18:23
  • 2129

编写一个方法,返回某集合的所有子集

ArrayList> getSubsets(ArrayList set,int index) { ArrayList> allsubsets; if(set.size()==index)//终止...
  • wangfengfan1
  • wangfengfan1
  • 2015年08月29日 20:45
  • 692

JDBC--Result 获取返回集合

package jdbc.chap05; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql...
  • Vangogh_java
  • Vangogh_java
  • 2016年09月27日 20:51
  • 2987

关于mybatis返回单一对象或对象列表的问题

关于mybatis返回单一对象或对象列表的问题一.说明 返回数据类型由dao中的接口和map.xml文件共同决定。另外,不论是返回单一对象还是对象列表,***map.xml中的配置都是一样的,都是re...
  • kangsenkangsen
  • kangsenkangsen
  • 2016年04月24日 22:02
  • 24577

Mybatis系列(八)集合映射

Mybatis系列之集合映射 上篇文章我们讲了关联映射,实现了销售与登录用户之间的关联。本文我们接着来讲一讲集合映射,实现销售与客户的多对多关系。 实现销售与客户多对多关系 本文中仍延用《Myba...
  • chris_mao
  • chris_mao
  • 2015年10月02日 21:47
  • 14398

JAVA的集合类型有哪些

Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下: CollectionList CollectionList CollectionList...
  • shangandeyu_kun
  • shangandeyu_kun
  • 2016年03月25日 17:18
  • 4096

关于mybatis增删改查时条件为一个集合时如何利用foreach书写sql语句

这种情况属于增删改查条件为集合时遇到。例如想要删除10个用户,根据id删除,如果每次只传入一个id,那么需要执行10条delete语句,如果利用foreach后一条语句就搞定,下面列举出一个简单的方法...
  • sinat_16381803
  • sinat_16381803
  • 2016年04月13日 17:00
  • 1021

JDBC返回结果集转Map集合

package com.tiantian.mybatis.test; import java.math.BigDecimal; import java.sql.Connection; import ...
  • yangzongzhuan
  • yangzongzhuan
  • 2015年05月04日 13:05
  • 4520

Action返回自定义类的List集合通过JSP中的Struct2标签显示

Action返回自定义类的List集合通过JSP中的Struct2标签显示 有时候,通过数据库查询出来的数据需要显示在页面上,但是Action中返回的只有List易于操作,所以需要在Jsp页面调用标...
  • mashihao123
  • mashihao123
  • 2016年01月11日 20:13
  • 398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有关返回集合的错误
举报原因:
原因补充:

(最多只允许输入30个字)