hibernate1对多

实体类就不多说了,分别为你的实体类建立相关的hbm.xml

city.hbm.xml:

<class name="com.entity.city" table="CITY">
        <id name="cid" type="java.lang.String">
            <column name="CID" />
            <generator class="guid" />
        </id>
        <property name="cname" type="java.lang.String">
            <column name="CNAME" />
        </property>
        <many-to-one name="province" class="com.entity.province" fetch="join">
            <column name="pid" />
        </many-to-one>
</class>

province.hbm.xml:

<class name="com.entity.province" table="PROVINCE">
        <id name="pid" type="java.lang.String">
            <column name="PID" />
            <generator class="guid" />
        </id>
        <property name="pname" type="java.lang.String">
            <column name="PNAME" />
        </property>
        <set name="sc" table="CITY" inverse="false" lazy="true" cascade="all-delete-orphan">
            <key>
                <column name="PID" />
            </key>
            <one-to-many class="com.entity.city" />
        </set>
        <many-to-one name="nation" class="com.entity.nation" fetch="join">
            <column name="nid" />
        </many-to-one>
</class>

nation.hbm.xml:

<class name="com.entity.nation" table="NATION">
        <id name="nid" type="java.lang.String">
            <column name="NID" />
            <generator class="guid" />
        </id>
        <property name="nname" type="java.lang.String">
            <column name="NNAME" />
        </property>
        <set name="sp" table="PROVINCE" inverse="false" lazy="true" cascade="all-delete-orphan">
            <key>
                <column name="NID" />
            </key>
            <one-to-many class="com.entity.province" />
        </set>
</class>

这里要注意到几点,如果你在实体类将几张表的关系订好,eclipse会帮你把这些实体类的1对多关系,多对1关系自动建好在hbm.xml中,但是id列需要改为guid或者是uuid的随机数,其次是key的列要改为相关表的id,在set中需要建好级联,不然会报错。

调用的话,要先从主表开始:

Configuration configuration=null;
	SessionFactory sessionFactory=null;
	Session session=null;
	Transaction transaction=null;
	
	@Before
	public void before() {
		configuration=new Configuration().configure();
		sessionFactory=configuration.buildSessionFactory();
		session=sessionFactory.openSession();
		transaction=session.beginTransaction();
	}
	
	@After
	public void after() {
		transaction.commit();
		session.close();
		sessionFactory.close();
	}
	
	@Test
	public void add() {
		nation n=new nation();
		n.setNname("中国");
		
		province p1=new province();
		p1.setPname("湖南");
		province p2=new province();
		p2.setPname("广东");
		
		city c1=new city();
		c1.setCname("长沙");
		city c2=new city();
		c2.setCname("广州");		
	
		n.getSp().add(p1);
		n.getSp().add(p2);
		
		p1.getSc().add(c1);
		p2.getSc().add(c2);
		
		p1.setNation(n);
		p2.setNation(n);
		
		c1.setProvince(p1);
		c2.setProvince(p2);
 
		session.save(n);
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值