diff --git a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java index adc3a34da..e5ad47d90 100644 --- a/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java +++ b/redisson/src/main/java/org/redisson/RedissonLiveObjectService.java @@ -212,10 +212,11 @@ public class RedissonLiveObjectService implements RLiveObjectService { continue; } - String idFieldName = getRIdFieldName(detachedObject.getClass()); validateAnnotation(detachedObject, field.getName()); - copy(detachedObject, attachedObject, Arrays.asList(idFieldName)); } + + String idFieldName = getRIdFieldName(detachedObject.getClass()); + copy(detachedObject, attachedObject, Arrays.asList(idFieldName)); } commandExecutor.execute(); diff --git a/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java b/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java index 101bc82b0..9266f98f1 100644 --- a/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java +++ b/redisson/src/main/java/org/redisson/liveobject/core/AccessorInterceptor.java @@ -199,9 +199,11 @@ public class AccessorInterceptor { NamingScheme namingScheme = connectionManager.getCommandExecutor().getObjectBuilder().getNamingScheme(me.getClass().getSuperclass()); String indexName = namingScheme.getIndexName(me.getClass().getSuperclass(), field.getName()); + boolean skipExecution = false; CommandBatchService ce; if (commandExecutor instanceof CommandBatchService) { ce = (CommandBatchService) commandExecutor; + skipExecution = true; } else { ce = new CommandBatchService(connectionManager); } @@ -213,7 +215,10 @@ public class AccessorInterceptor { RMultimapAsync map = new RedissonSetMultimap<>(namingScheme.getCodec(), ce, indexName); map.putAsync(arg, ((RLiveObject) me).getLiveObjectId()); } - ce.execute(); + + if (!skipExecution) { + ce.execute(); + } } }