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 9648c7037..bc03d253c 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 { + } else if (mode == SpiQuery.Mode.LAZYLOAD_BEAN) { query.setIncludeSoftDeletes(); } if (embeddedOwnerIndex > -1) { diff --git a/ebean-test/src/test/java/org/tests/basic/lob/TestBasicClobNoVer.java b/ebean-test/src/test/java/org/tests/basic/lob/TestBasicClobNoVer.java index 7289a7ac2..3123afc57 100644 --- a/ebean-test/src/test/java/org/tests/basic/lob/TestBasicClobNoVer.java +++ b/ebean-test/src/test/java/org/tests/basic/lob/TestBasicClobNoVer.java @@ -7,14 +7,15 @@ import io.ebean.test.LoggedSql; import org.junit.jupiter.api.Test; import org.tests.model.basic.EBasicClobNoVer; +import javax.xml.transform.sax.SAXSource; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -public class TestBasicClobNoVer extends BaseTestCase { +class TestBasicClobNoVer extends BaseTestCase { @Test - public void test() { + void test() { EBasicClobNoVer entity = new EBasicClobNoVer(); entity.setName("test"); @@ -65,4 +66,21 @@ public class TestBasicClobNoVer extends BaseTestCase { assertThat(entity.getDescription()).isEqualTo("modified"); } + @Test + void refresh_withSoftDelete() { + + EBasicClobNoVer bean = new EBasicClobNoVer(); + bean.setDescription("hello"); + DB.save(bean); + + DB.refresh(bean); + + LoggedSql.start(); + bean.children().forEach(System.out::println); + List sql = LoggedSql.stop(); + + assertThat(sql).hasSize(1); + assertThat(sql.get(0)).contains(" and t0.deleted ="); + } + } diff --git a/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVer.java b/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVer.java index 735ad796e..f946eb82b 100644 --- a/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVer.java +++ b/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVer.java @@ -3,6 +3,9 @@ package org.tests.model.basic; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Lob; +import javax.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; @Entity public class EBasicClobNoVer { @@ -18,6 +21,9 @@ public class EBasicClobNoVer { @Lob private String description; + @OneToMany + private List children = new ArrayList<>(); + public void setId(Long id) { this.id = id; } @@ -41,4 +47,13 @@ public class EBasicClobNoVer { public String getDescription() { return description; } + + public List children() { + return children; + } + + public EBasicClobNoVer children(List children) { + this.children = children; + return this; + } } diff --git a/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVerChild.java b/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVerChild.java new file mode 100644 index 000000000..8af997f69 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/model/basic/EBasicClobNoVerChild.java @@ -0,0 +1,49 @@ +package org.tests.model.basic; + +import io.ebean.annotation.SoftDelete; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Entity +public class EBasicClobNoVerChild { + + @Id + private Long id; + + @ManyToOne + private final EBasicClobNoVer parent; + + private final String child; + + @SoftDelete + private boolean deleted; + + public EBasicClobNoVerChild(EBasicClobNoVer parent, String child) { + this.parent = parent; + this.child = child; + } + + public Long id() { + return id; + } + + public EBasicClobNoVerChild id(Long id) { + this.id = id; + return this; + } + + public String child() { + return child; + } + + public boolean deleted() { + return deleted; + } + + public EBasicClobNoVerChild deleted(boolean deleted) { + this.deleted = deleted; + return this; + } +}