From 60c5d336875795d7442bc92ba9c8a37c4f350b8b Mon Sep 17 00:00:00 2001
From: Michael Simon <simon@kit.edu>
Date: Tue, 15 Dec 2020 14:06:44 +0100
Subject: [PATCH] Change identity to user to no cascading and do it manually

This is really slow with cascading sometimes
---
 .../edu/kit/scc/webreg/entity/identity/IdentityEntity.java    | 4 +---
 .../kit/scc/webreg/service/identity/IdentityServiceImpl.java  | 2 ++
 .../kit/scc/webreg/service/impl/UserDeleteServiceImpl.java    | 4 +++-
 3 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/bwreg-jpa/src/main/java/edu/kit/scc/webreg/entity/identity/IdentityEntity.java b/bwreg-jpa/src/main/java/edu/kit/scc/webreg/entity/identity/IdentityEntity.java
index cc1108751..dde131ea8 100644
--- a/bwreg-jpa/src/main/java/edu/kit/scc/webreg/entity/identity/IdentityEntity.java
+++ b/bwreg-jpa/src/main/java/edu/kit/scc/webreg/entity/identity/IdentityEntity.java
@@ -12,7 +12,6 @@ package edu.kit.scc.webreg.entity.identity;
 
 import java.util.Set;
 
-import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
@@ -35,8 +34,7 @@ public class IdentityEntity extends AbstractBaseEntity {
 	@Column(name="twofa_user_name", length=512)
 	private String twoFaUserName;
 
-	@OneToMany(targetEntity=UserEntity.class, mappedBy = "identity",
-			cascade = CascadeType.ALL)
+	@OneToMany(targetEntity=UserEntity.class, mappedBy = "identity")
 	private Set<UserEntity> users;
 
 	@OneToMany(targetEntity=IdentityUserPreferenceEntity.class, mappedBy = "identity")
diff --git a/bwreg-service/src/main/java/edu/kit/scc/webreg/service/identity/IdentityServiceImpl.java b/bwreg-service/src/main/java/edu/kit/scc/webreg/service/identity/IdentityServiceImpl.java
index cb1f5bbea..874019379 100644
--- a/bwreg-service/src/main/java/edu/kit/scc/webreg/service/identity/IdentityServiceImpl.java
+++ b/bwreg-service/src/main/java/edu/kit/scc/webreg/service/identity/IdentityServiceImpl.java
@@ -91,6 +91,8 @@ public class IdentityServiceImpl extends BaseServiceImpl<IdentityEntity, Long> i
 						id.setTwoFaUserName(user.getEppn());
 					else
 						id.setTwoFaUserName(UUID.randomUUID().toString());
+
+					logger.info("Add missing 2fa userId {} and 2fa username {}", id.getTwoFaUserId(), id.getTwoFaUserName());
 				}
 			}
 			else {
diff --git a/bwreg-service/src/main/java/edu/kit/scc/webreg/service/impl/UserDeleteServiceImpl.java b/bwreg-service/src/main/java/edu/kit/scc/webreg/service/impl/UserDeleteServiceImpl.java
index 6ec7264bd..c095ddb83 100644
--- a/bwreg-service/src/main/java/edu/kit/scc/webreg/service/impl/UserDeleteServiceImpl.java
+++ b/bwreg-service/src/main/java/edu/kit/scc/webreg/service/impl/UserDeleteServiceImpl.java
@@ -86,7 +86,9 @@ public class UserDeleteServiceImpl implements UserDeleteService {
 		logger.info("Delete all personal user data for identity {}", identity.getId());
 		identity = identityDao.merge(identity);
 		
-		for (UserEntity user : identity.getUsers()) {
+		List<UserEntity> userList = userDao.findByIdentity(identity);
+		
+		for (UserEntity user : userList) {
 			logger.info("Delete all personal user data for user {}", user.getId());
 
 			UserDeleteAuditor auditor = new UserDeleteAuditor(auditEntryDao, auditDetailDao, appConfig);
-- 
GitLab