我们来利用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 多对多的增删查。