您当前的位置: 首页 >  hibernate

Charge8

暂无认证

  • 2浏览

    0关注

    447博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Hibernate5双向多对多映射

Charge8 发布时间:2018-08-13 14:51:39 ,浏览量:2

 

在数据表结构的层面, 我们一般是将多对多的两个数据表转换为两组多对一的关系来实现。

 

 一、 POJO 类 及 xxx.hbm.xml 配置文件

    都是 对象集合字段

public class Activity {

	private int id;
	private String aname;
	private Set member = new HashSet();

    ...
}


public class Member {

	private int id;
	private String mname;
	private Set activity = new HashSet();

    ....
}	

Activity 类 配置文件


    
        
            
            
        
        
            
        
        
            
                
            
            
        
    

Member   类 配置文件


    
        
            
            
        
        
            
        
        
            
                
            
            
        
    

双向的多对多:             1: 中间表用同一个             2: 其中一端一定要设置 inverse="true", 避免两房都去维护中间, 造成冲突             3: 两端的 many-to-many 指定的类交叉相同

 

二、 junit 测试  
	@Test
	public void test() {
		
		/*Activity activity1 = new Activity();
		activity1.setAname("建军节");
		Activity activity2 = new Activity();
		activity2.setAname("建党节");
		
		Member member1 = new Member();
		member1.setMname("成员1");
		Member member2 = new Member();
		member2.setMname("成员2");
		
		//双向关联关系
		activity1.getMember().add(member1);
		activity1.getMember().add(member2);
		member1.getActivity().add(activity1);
		member2.getActivity().add(activity1);
		
		activity2.getMember().add(member2);
		member2.getActivity().add(activity2);
		
		session.save(activity1);
		session.save(activity2);
		session.save(member1);
		session.save(member2);*/
		
		Member member = session.get(Member.class, 2);
		Set activity = member.getActivity();
		System.out.println(activity.size());
		for (Activity activity2 : activity) {
			System.out.println(activity2.getAname());
		}
		
		/*Activity activity = session.get(Activity.class, 1);
		Set member = activity.getMember();
		System.out.println(member.size());
		for (Member member2 : member) {
			System.out.println(member2.getMname());
			
		}*/
		
	}

 

CRUD 与前面讲的类同

 

表的结构:

      此处中间表(联合主键):

 

关注
打赏
1664721914
查看更多评论
立即登录/注册

微信扫码登录

0.0354s