有关返回集合的错误

原创 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;    
}
 

Java有关集合的练习

1.某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性(String)、班级名称属性(String)和考试成绩属性(double) 某次考试结束后,每个学生都获得了一个考试成绩。...
  • yxq8888
  • yxq8888
  • 2017-10-25 19:24:40
  • 62

集合(Collection)文档

  • 2010年12月25日 13:47
  • 216KB
  • 下载

有关Java集合类的10大问题

原文地址:Top 10 questions about Java Collections
  • snarlfuture
  • snarlfuture
  • 2013-12-05 01:14:56
  • 1853

常见的服务器端返回码

2xx-成功  这类状态代码表明服务器成功地接受了客户端请求。  200-确定。客户端请求已成功。  201-已创建。  202-已接受。  203-非权威性信息。  204-无内容。  ...
  • Rodulf
  • Rodulf
  • 2016-05-06 14:48:18
  • 1067

latex 集合相关代码

%应该包含 \usepackage{amsmath,amssymb}ss 集合 表示效果 实数集合 \mathbb{R} R \mathbb{R} 复数集合 \mat...
  • u011491972
  • u011491972
  • 2017-01-06 14:56:12
  • 365

oracle集合程序

  • 2011年08月03日 20:29
  • 17KB
  • 下载

《操作系统》——解决并发进程中与时间有关的错误

在多道程序设计的系统中同时存在着许多进程。他们可能同时装入主存,等待处理器的调度,这就形成的并发进程。对于单核处理器来说,并发进程并不是多个进程同时占用处理器同时执行,而是同时装入主存,至于进程什么时...
  • u013067402
  • u013067402
  • 2015-04-29 20:45:42
  • 2499

JAVA相关面试题集合

线程与进进程60、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?答:有两种实现方法,分别是继承Thread类与实现Runnabl...
  • Lammy0926
  • Lammy0926
  • 2009-09-16 15:48:00
  • 931

mybatis里面返回list集合

如果返回的是一个集合,需要在返回类型里面标注,集合中元素的类型。 mybatis会自动将其封装成相应的对象,组合成一个list返回...
  • qq_33574890
  • qq_33574890
  • 2017-12-16 20:20:25
  • 278

java集合的用法

package com.test1; //先引用一个包 import java.util.*; public class Demo7_1 { public static voi...
  • maowenge
  • maowenge
  • 2014-11-29 21:38:14
  • 209
收藏助手
不良信息举报
您举报文章:有关返回集合的错误
举报原因:
原因补充:

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