楼主把问题复杂化了。
根据楼主的代码:楼主用了Example查询,是想查询符合某些条件的User及他们各自的Address,那很简单:1、代码:
public List getUsersAndAddressByPara( User user ) {
        Criteria criteria = this.getSession().createCriteria( User.class );
        criteria.add( Example.create( user ) );
        return criteria.list();
}2、运行以上代码,如果出现LazyInitializationException,则按如下步骤处理:
既然User与Address是一对多,那么楼主应该在User中已经配置了一个<set>,请在<set>中加入fetch="join"lazy="false"
形如:
<set ... lazy="false" >

<set ... fetch="join" >-----看样子,楼主是Hibernate新手,附带提醒两点:
1、QBE中,传主键是没有意义的,换句话说,就算你给user的id赋值,该值也不被使用。QBE只考虑非主键字段。
2、Expression类已经过时了,不建议使用。以后如果需要用它,请用其父类Restrictions替代。

解决方案 »

  1.   

    [接1楼]
    想必楼主已经知道:Address的对象,已经包含在User中的。通过与<set>对应的get方法可以得到某个User所对应的全部Address
      

  2.   

    请帮我看一下,查询结果为空诶
    ProjectCatalog pc = new ProjectCatalog();
    pc.setProperty();//输入查询条件,该条件数据库中存在的,但没查出结果public List getProjectCatalogByPara( ProjectCatalog pc ) { Criteria criteria = this.getSession().createCriteria( ProjectCatalog.class );
    criteria.add( Example.create( pc ) );

    System.out.println(criteria.list().size());  //该行显示为0,应该是ProjectCatalog.class的配置文件有问题,
                                                       //不知怎么改,请帮我看一下配置文件,谢谢

    return criteria.list();
    }<?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse - Hibernate Tools
    -->
    <hibernate-mapping>
        <class name="org.sim.dao.domain.ProjectCatalog" table="ProjectCatalog" schema="dbo" catalog="sim">
            <id name="id" type="integer">
                <column name="ID" />
                <generator class="identity" />
            </id>
            <many-to-one name="projectPoint" class="org.sim.dao.domain.ProjectPoint" fetch="select">
                <column name="ProjectRank" />
            </many-to-one>
            <many-to-one name="humanResource" class="org.sim.dao.domain.HumanResource" fetch="select">
             <column name="ManagerID" length="50" />
            </many-to-one>
            <property name="contractId" type="string">
                <column name="ContractID" length="50" />
            </property>
            <property name="projectId" type="string">
                <column name="ProjectID" length="50" />
            </property>
            <property name="projectName" type="string">
                <column name="ProjectName" length="50" not-null="true" />
            </property>
            <property name="projectSource" type="string">
                <column name="ProjectSource" length="500" />
            </property>
            <property name="beginTime" type="timestamp">
                <column name="BeginTime" length="23" />
            </property>
            <property name="endTime" type="timestamp">
                <column name="EndTime" length="23" />
            </property>
            <property name="moneyUsed" type="double">
                <column name="MoneyUsed" precision="53" scale="0" />
            </property>
            <property name="organization" type="string">
                <column name="Organization" length="50" />
            </property>
            <property name="activeType" type="string">
                <column name="ActiveType" length="50" />
            </property>
            <property name="cooperationType" type="string">
                <column name="CooperationType" length="50" />
            </property>
            <property name="courseType" type="string">
                <column name="CourseType" length="50" />
            </property>
            <property name="progress" type="string">
                <column name="Progress" length="50" />
            </property>
            <property name="returnFile" type="string">
                <column name="ReturnFile" length="50" />
            </property>
            <property name="vhflag" type="integer">
                <column name="VHflag" />
            </property>
            <property name="currentYear" type="timestamp">
             <column name="CurrentYear" length="23"></column>
            </property>
            <set name="projectCatalogHrs" cascade="all" lazy="false" inverse="true">
                <key>
                    <column name="ProjectID" />
                </key>
                <one-to-many class="org.sim.dao.domain.ProjectCatalogHr" />
            </set>
            <set name="programMoneyDates" cascade="all" lazy="false" inverse="true">
             <key>
             <column name="ProjectCatalogID"/>
             </key>
             <one-to-many class="org.sim.dao.domain.ProgramMoneyDate"/>
            </set>
        </class>
    </hibernate-mapping>
      

  3.   

    我在想楼主这个查询想得到什么?想得到某一用户的所有地址吗?
    直接用一个HQL就可以搞定...List list = session.createQuery("from User u left join u.addresses").list;
    这个方法返回的是List的每个元素都是一个长度为二的数组,数组第一个元素是User对象,第二个元素是Addriess对象