请问Hibernate怎么实现表与表之间的关连? 
比如这个SQL语句: 
select A.ID,A.Name FROM A WHERE A.ID WHERE A.ID IN (SELECT B.Father_ID FROM B WHERE B.ID=100) 
其中B表的Father_ID是个外键,是对应A表的ID主键. 
请问用Hibernate该如何写呢? 请教的是Hibernate该如何写,比如以下语句: 
ICriteria criterA = NHibernateSession.CreateCriteria(typeof(A)); 
ICriteria criterB = NHibernateSession.CreateCriteria(typeof(B)); 具体该如何将criterA 和criterB 关连起来呢? 
其中的对象该如何关连呢? 

解决方案 »

  1.   

    看看hibernate的书吧
    是基于对象持久化的
    1对1 多对1关联
      

  2.   


    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
        
    <hibernate-mapping>
    <!-- 
        Created by the Middlegen Hibernate plugin 2.1    http://boss.bekk.no/boss/middlegen/
        http://www.hibernate.org/
    --><class 
        name="hibernatesample.Tuser1" 
        table="t_user1"
    >
        <id
            name="id"
            type="java.lang.Integer"
            column="id"
        >
            <generator class="native" />
        </id>    <property
            name="name"
            type="java.lang.String"
            column="name"
            not-null="true"
            length="45"
        >
        </property>
        <property
            name="age"
            type="java.lang.Integer"
            column="age"
            length="10"
        >
        </property>    <!-- Associations -->
      
        <!-- bi-directional one-to-one association to Tpassport -->
        <one-to-one
            name="passport"
            class="hibernatesample.Tpassport"
            outer-join="true"
            cascade="all"
            constrained="true"
        > 
        </one-to-one>
        <!-- bi-directional many-to-one association to Tgroup -->
        <!--<many-to-one
            name="group"
            class="hibernatesample.Tgroup"
            not-null="true"
            unique="true"
        >
            <column name="group_id" />
        </many-to-one>--></class>
    </hibernate-mapping>
      

  3.   

    是A-->B一对多的关系吗?
    建立A类,B类,A类中有B类的一个集合,B类有A类型的一个属性。
    hql语句:
    select c from B join B.a c where B.id=100
      

  4.   

    A的持久化类里设置一个B对象的引用的属性
    然后在配置文件里把这个属性写成many-to-one
    在自动生成表
    就可以了
      

  5.   

    你要知道你的SQL语句,就是在SQL java bean 类属性呀,可明白呀!
      

  6.   

    举个例子,多对一关系Group对象: id   name
    User对象:id  name  Group
    多个用户对应一个组的关系   User -----> Group(1)Group.hbm.xml<hibernate-mapping>
    <class name="com.bjsxt.hibernate.Group" table="t_group">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"/>
    </class>
    </hibernate-mapping>
    (2)User.hbm.xml<hibernate-mapping>
    <class name="com.bjsxt.hibernate.User" table="t_user">
    <id name="id">
    <generator class="native"/>
    </id>
    <property name="name"/>
    <!-- 
    <many-to-one name="group" column="groupid" cascade="all"/>
     -->
     <many-to-one name="group" column="groupid"/>
    </class>
    </hibernate-mapping>
      

  7.   

    关键是数据库设计好了,各表的关系设置好,在映射的时候hibernate都会帮你做好的。
    SQL语句一般就不用写两个表关联这么麻烦了。