From 2d15cd800c34e39866d2c0b0fcf54332e4258006 Mon Sep 17 00:00:00 2001 From: lianghy Date: Sat, 16 May 2026 11:47:25 +0800 Subject: [PATCH] [identity]: clean account resource refs by base type Use the base resource type when deleting account resource refs for soft-deleted concrete resources. Resolves: ZCF-3527 Change-Id: Ida39a3ee5e6b4b0d3255bfef95601890afd80709 --- .../src/main/java/org/zstack/identity/AccountManagerImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/identity/src/main/java/org/zstack/identity/AccountManagerImpl.java b/identity/src/main/java/org/zstack/identity/AccountManagerImpl.java index e11ee611ffe..f971e4db74a 100755 --- a/identity/src/main/java/org/zstack/identity/AccountManagerImpl.java +++ b/identity/src/main/java/org/zstack/identity/AccountManagerImpl.java @@ -1113,10 +1113,11 @@ public List getEntityClassForSoftDeleteEntityExtension() { @Override @Transactional public void postSoftDelete(Collection entityIds, Class entityClass) { + String resourceType = ResourceTypeMetadata.getBaseResourceTypeFromConcreteType(entityClass).getSimpleName(); String sql = "delete from AccountResourceRefVO ref where ref.resourceUuid in (:uuids) and ref.resourceType = :resourceType"; Query q = dbf.getEntityManager().createQuery(sql); q.setParameter("uuids", entityIds); - q.setParameter("resourceType", entityClass.getSimpleName()); + q.setParameter("resourceType", resourceType); q.executeUpdate(); }