diff --git a/src/main/java/com/example/cosmos_serversb/entities/Group.java b/src/main/java/com/example/cosmos_serversb/entities/Group.java
index c900ac4..eb988d8 100644
--- a/src/main/java/com/example/cosmos_serversb/entities/Group.java
+++ b/src/main/java/com/example/cosmos_serversb/entities/Group.java
@@ -78,6 +78,10 @@
return members;
}
+ public void clearAllMembersForDeleteGroup(){
+ members.clear();
+ }
+
public void addMember(String uId){
User user = Users.getInstance().getUserById(uId);
if(user != null) {
@@ -91,5 +95,12 @@
}
}
+ public boolean equals(Group group) {
+ if(this.gId == group.getgId()){
+ return true;
+ }
+ return false;
+ }
+
}
diff --git a/src/main/java/com/example/cosmos_serversb/entities/User.java b/src/main/java/com/example/cosmos_serversb/entities/User.java
index e4f663a..592d2ea 100644
--- a/src/main/java/com/example/cosmos_serversb/entities/User.java
+++ b/src/main/java/com/example/cosmos_serversb/entities/User.java
@@ -129,4 +129,15 @@
public void addGroups(Group group){
groups.add(group);
}
+
+ public void exitGroup(Group group){
+ this.groups.remove(group);
+ }
+
+ public boolean equals(User user) {
+ if(this.uId == user.getuId()){
+ return true;
+ }
+ return false;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/example/cosmos_serversb/models/Groups.java b/src/main/java/com/example/cosmos_serversb/models/Groups.java
index 178e40b..0b57aa5 100644
--- a/src/main/java/com/example/cosmos_serversb/models/Groups.java
+++ b/src/main/java/com/example/cosmos_serversb/models/Groups.java
@@ -1,5 +1,6 @@
package com.example.cosmos_serversb.models;
+import java.lang.reflect.Member;
import java.util.*;
import javax.inject.Singleton;
import java.util.Date;
@@ -71,10 +72,18 @@
}
public static DeleteResult deleteGroup(String gId){
- Group editGroup = Groups.getInstance().getGroupByGid(gId);
+ Session session = SessionManager.getInstance().getSession();
+ Group editGroup = session.get(Group.class, gId);
if(editGroup == null){
return DeleteResult.FAILURE;
}
+ //削除するグループに所属しているユーザーに、退会してもらう。
+ for(User member : editGroup.getMembers()){
+ member.exitGroup(editGroup);
+ }
+ //削除するグループが持っているユーザの情報を全て削除する。
+ editGroup.clearAllMembersForDeleteGroup();
+ session.delete(editGroup);
return DeleteResult.SUCCESS;
}
diff --git a/src/main/resources/Group.hbm.xml b/src/main/resources/Group.hbm.xml
index 41104b5..061392e 100644
--- a/src/main/resources/Group.hbm.xml
+++ b/src/main/resources/Group.hbm.xml
@@ -25,12 +25,11 @@
table = "GROUP_MEMBER"
lazy = "true"
inverse = "true"
- cascade = "all">
+ cascade = "persist, merge">
+ column="UID">
diff --git a/src/main/resources/User.hbm.xml b/src/main/resources/User.hbm.xml
index de6de5f..d4528e7 100644
--- a/src/main/resources/User.hbm.xml
+++ b/src/main/resources/User.hbm.xml
@@ -22,13 +22,11 @@
+ cascade = "refresh">
+ column="GID">