From 0100d024d91050cfd8f081c1a770d06ded3f58c2 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 27 Jul 2022 22:25:10 +1200 Subject: [PATCH] #2750 #2751 SoftDeleted entity included via lazy loading (Jackson serialisation) The effective fix is in DLoadContext, only allow includeSoftDeletes to be set from the query when the query is SpiQuery.Mode.NORMAL (not a lazy loading query). --- .../java/io/ebeaninternal/server/core/DefaultBeanLoader.java | 2 +- .../java/io/ebeaninternal/server/loadcontext/DLoadContext.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultBeanLoader.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultBeanLoader.java index 854842b21..5bdf93a34 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultBeanLoader.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultBeanLoader.java @@ -199,7 +199,7 @@ final class DefaultBeanLoader { query.setLazyLoadProperty(ebi.getLazyLoadProperty()); if (draft) { query.asDraft(); - } else if (mode == SpiQuery.Mode.LAZYLOAD_BEAN) { + } else if (mode == SpiQuery.Mode.LAZYLOAD_BEAN && desc.isSoftDelete()) { query.setIncludeSoftDeletes(); } if (embeddedOwnerIndex > -1) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/loadcontext/DLoadContext.java b/ebean-core/src/main/java/io/ebeaninternal/server/loadcontext/DLoadContext.java index bfef45804..36cb0ee15 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/loadcontext/DLoadContext.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/loadcontext/DLoadContext.java @@ -101,7 +101,7 @@ public final class DLoadContext implements LoadContext { this.useDocStore = query.isUseDocStore(); this.asOf = query.getAsOf(); this.asDraft = query.isAsDraft(); - this.includeSoftDeletes = query.isIncludeSoftDeletes(); + this.includeSoftDeletes = query.isIncludeSoftDeletes() && query.getMode() == SpiQuery.Mode.NORMAL; this.readOnly = query.isReadOnly(); this.disableReadAudit = query.isDisableReadAudit(); this.disableLazyLoading = query.isDisableLazyLoading();