日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Hibernate 多对多映射实列

發布時間:2025/5/22 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate 多对多映射实列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate 3.0.5

1、Usergroup.hbm.xml 用戶組表
???? ??? <set name="users" table="Groupandusers" lazy="true" inverse="false" cascade="save-update" sort="unsorted">
??? ??? ??? <key column="GROUPID"/>
??? ??? ??? <many-to-many class="cn.com.commnet.model.systems.Users" column="USERID" outer-join="auto"/>
??????? </set>


2、Users.hbm.xml 用戶表
??? ??? <set name="groups" table="Groupandusers" lazy="true" inverse="false" cascade="save-update" sort="unsorted" >
??? ??? ??? <key column="USERID"/>
??? ??? ??? <many-to-many class="cn.com.commnet.model.systems.Usergroup" column="GROUPID" outer-join="auto"/>
??????? </set>

3、Model? Usergroup.java
private Set users = new HashSet();
public Set getUsers() {
??? ??? return users;
??? }

??? public void setUsers(Set users) {
??? ??? this.users = users;
??? }
???
??? public void addUser(RgUsers user) {
??? ??? users.add(user);
??? }
???
??? public void updateUsers(Set newUserset){
??? ??? //get intersection elements 取交集
??? ??? this.getUsers().retainAll(newUserset);
??? ??? //get the refresh set in new set 新的集合中取補集
??? ??? newUserset.removeAll( this.getUsers());
??? ??? //get the refreshed data 最終的集合
??? ??? this.getUsers().addAll(newUserset);
??? }

4、Model??? Users.java
private Set groups = new HashSet();

??? public Set getGroups() {
??? ??? return groups;
??? }

??? public void setGroups(Set groups) {
??? ??? this.groups = groups;
??? }
???
??? public void addGroup(RgUsergroup group) {
??? ??? groups.add(group);
??? }
???
??? public void updateGroups(Set newGroupset){
??? ??? //get intersection elements 取交集
??? ??? this.getGroups().retainAll(newGroupset);
??? ??? //get the refresh set in new set 新的集合中取補集
??? ??? newGroupset.removeAll( this.getGroups());
??? ??? //get the refreshed data 最終的集合
??? ??? this.getGroups().addAll(newGroupset);
??? //父接點一側的配置應為 cascade="all-delete-orphan" ,
??? //否則子接點只能修改和新增,集合中刪除掉的子接點,在數據庫中并沒有被刪除掉。

??? }

5、Service 層? UserManager.java
??? ??? ??? a). add 方法:
??? ??? ??? String[] groupList = form.getGroupList();
??? ??? ???? for(int i=0;i<groupList.length;i++) {
??? ??? ???? ??? RgUsergroup group = new UserGroupDAO().getGroupById(Long.valueOf(groupList[i]),false);
??? ??? ???? ??? user.addGroup(group);
??? ??? ???? }
??? ??? ??? dao.save(user);
??? ?? ??? b). update 方法:
??? ??? ??? Set newGroupset = new HashSet();
??? ??? ???? String[] groupList = form.getGroupList();
??? ??? ???? for(int i=0;i<groupList.length;i++) {
??? ??? ???? ??? RgUsergroup group = new UserGroupDAO().getGroupById(Long.valueOf(groupList[i]),false);
??? ??? ???? ??? newGroupset.add(group);
??? ??? ???? }
??? ??? ???? user.updateGroups(newGroupset);?? //更新多對多對應表
??? ??? ??? dao.update(user);

??? 另外, 多對多, 及一對多的關聯查詢時, 通過外鍵屬性的條件進行查詢, 如:
??? String strSql = "from Users t where t.groups.groupid =?"

轉載于:https://www.cnblogs.com/josson/archive/2005/08/19/218768.html

總結

以上是生活随笔為你收集整理的Hibernate 多对多映射实列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。