读书人

Hibernate多对多两种状况

发布时间: 2013-03-06 16:20:31 作者: rapoo

Hibernate多对多两种情况
Hibernate在做多对多映射的时候,除了原先的两张表外,会多出一个中间表做关联,根据中间表的会有两种不同的配置情况:

相关链接:http://www.cnblogs.com/jetZheng/archive/2013/03/04/hibernate.html

1.中间表不需要加入额外数据。

2.中间表有其他字段,需记录额外数据。

下面,我们就以address、person这两张表根据这两种情况做下相应的配置:

情况1:

我们需要建三张表,一张address表,一张person表,一张中间表(其实中间表可以不用建,配置好后运行会自动生成),如下:


测试类:

以上,便完成了相应的配置,进行数据插入时,只需应对相应的保存即可,如:

插入的时候,需先保存person与address表,再保存person_address表:

public void insert() {                Person p = new Person();        p.setPersonId(1);        p.setPersonName("newUser");        Address ad = new Address();        ad.setAddressId(2);        ad.setAddressName("here");        sf.getCurrentSession().persist(p);        sf.getCurrentSession().persist(ad);        PersonAddress pa = new PersonAddress();        PersonAddressPK paPK = new PersonAddressPK();        paPK.setPerson(p.getPersonId());        paPK.setAddress(ad.getAddressId());        pa.setPaPK(paPK);        pa.setPaDescribe("this is a test");        sf.getCurrentSession().persist(pa);}

以上,便是hibernate多对多时可采用的几种方法了。

读书人网 >软件架构设计

热点推荐