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多对多时可采用的几种方法了。