Hibernate many-to-many

我们来利用Hibernate 的many-to-many来实现增删查。

 

1:实体类:

User:

<hibernate-mapping>
    <class name="com.zking.entity.User" table="USER">
        <id name="uid" type="java.lang.String">
            <column name="UID" />
            <generator class="guid" />
        </id>
        <property name="uname" type="java.lang.String">
            <column name="UNAME" />
        </property>
        <set name="sr" table="userroles" inverse="true" cascade="save-update">
        <key column="uid"></key>
        <many-to-many class="com.zking.entity.Roles" column="rid"></many-to-many>
        </set>
    </class>
</hibernate-mapping>

Roles:

<hibernate-mapping>
    <class name="com.zking.entity.Roles" table="ROLES">
        <id name="rid" type="java.lang.String">
            <column name="RID" />
            <generator class="guid" />
        </id>
        <property name="rname" type="java.lang.String">
            <column name="RNAME" />
        </property>
        <set name="su" table="userroles" >
            <key>
                <column name="RID" />
            </key>
            <many-to-many class="com.zking.entity.User" column="uid"/>
        </set>
        <set name="sm" table="rolesmenu" inverse="true"  cascade="save-update">
            <key>
                <column name="RID" />
            </key>
            <many-to-many class="com.zking.entity.Menu" column="mid"/>
        </set>
    </class>
</hibernate-mapping>

Menu:

<hibernate-mapping>
    <class name="com.zking.entity.Menu" table="MENU">
        <id name="mid" type="java.lang.String">
            <column name="MID" />
            <generator class="guid" />
        </id>
        <property name="mname" type="java.lang.String">
            <column name="MNAME" />
        </property>
        <set name="sr" table="rolesmenu" >
            <key>
                <column name="MID" />
            </key>
            <many-to-many class="com.zking.entity.Roles" column="rid"/>
        </set>
    </class>
</hibernate-mapping>

2.增删查实现类:

public class HibernateTest {
	Configuration configuration=null;
	SessionFactory sessionFactory=null;
	Session session=null;
	@Test
	public void add() {
		configuration=new Configuration().configure();
		sessionFactory=configuration.buildSessionFactory();
		session=sessionFactory.openSession();
		
		User user=new User();
		user.setUname("1212");
		//
		Roles roles=new Roles();
		roles.setRname("2323");
		//
		Menu menu=new Menu();
		menu.setMname("3434");
		//互设
		user.getSr().add(roles);
		roles.getSm().add(menu);
		
		menu.getSr().add(roles);
		roles.getSu().add(user);
		
		session.saveOrUpdate(user);
		session.saveOrUpdate(menu);
		session.beginTransaction().commit();
		session.close();
		sessionFactory.close();
		
		
			
		}
	@Test
    public void delete() {
		configuration=new Configuration().configure();
		sessionFactory=configuration.buildSessionFactory();
		session=sessionFactory.openSession();

		Roles roles=session.get(Roles.class, "8bcd3ae9-b5b1-11e8-b788-54ab3aa9c18a");
		Set<Menu>sm=roles.getSm();
		for(Menu m:sm) {
			if (m.getMid().equals("8bcd9d1f-b5b1-11e8-b788-54ab3aa9c18a")) {
				Set<Roles>sr=m.getSr();
				sr.remove(roles);
			}
		}
		session.update(roles);
		session.beginTransaction().commit();
		sessionFactory.close();
	}
	@Test
	public void query() {
		configuration=new Configuration().configure();
		sessionFactory=configuration.buildSessionFactory();
		session=sessionFactory.openSession();
		User user=session.get(User.class, "8bca363d-b5b1-11e8-b788-54ab3aa9c18a");
		System.out.println(user);
		String outStr=JSON.toJSONString(user);
		System.out.println(outStr);
	}

}

以上就是HIbernate 多对多的增删查。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值