diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java b/ebean-core/src/main/java/io/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java index 7238224d7..1b31ee08c 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java @@ -143,13 +143,13 @@ class SqlTreeNodeExtraJoin implements SqlTreeNode { // "promote" to left join as the path contains a many joinType = SqlJoinType.OUTER; } - if (!manyToMany && !oneToOneExported) { + if (!manyToMany) { if (assocBeanProperty.isFormula()) { // add joins for formula beans assocBeanProperty.appendFrom(ctx, joinType); } joinType = assocBeanProperty.addJoin(joinType, prefix, ctx); - if (assocBeanProperty.isTargetSoftDelete() && temporalMode != SpiQuery.TemporalMode.SOFT_DELETED) { + if (!oneToOneExported && assocBeanProperty.isTargetSoftDelete() && temporalMode != SpiQuery.TemporalMode.SOFT_DELETED) { ctx.append(" and ").append(assocBeanProperty.getSoftDeletePredicate(ctx.getTableAlias(prefix))); } } diff --git a/ebean-core/src/test/java/org/tests/softdelete/TestSoftDeleteOptionalRelationship.java b/ebean-core/src/test/java/org/tests/softdelete/TestSoftDeleteOptionalRelationship.java index 2488060d4..b4e320b21 100644 --- a/ebean-core/src/test/java/org/tests/softdelete/TestSoftDeleteOptionalRelationship.java +++ b/ebean-core/src/test/java/org/tests/softdelete/TestSoftDeleteOptionalRelationship.java @@ -3,12 +3,14 @@ package org.tests.softdelete; import io.ebean.BaseTestCase; import io.ebean.DB; import io.ebean.Ebean; +import org.ebeantest.LoggedSqlCollector; import org.tests.model.softdelete.ESoftDelMid; import io.ebean.Finder; import org.junit.Test; import org.tests.model.softdelete.ESoftDelY; import org.tests.model.softdelete.ESoftDelZ; +import java.util.List; import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; @@ -44,6 +46,8 @@ public class TestSoftDeleteOptionalRelationship extends BaseTestCase { DB.save(y); } + LoggedSqlCollector.start(); + Finder finder = new Finder<>(ESoftDelY.class); ESoftDelY bean = finder .query() @@ -53,7 +57,10 @@ public class TestSoftDeleteOptionalRelationship extends BaseTestCase { .findOne(); assertThat(bean).isNotNull(); + + final List sql = LoggedSqlCollector.stop(); + assertThat(sql).hasSize(1); + assertThat(sql.get(0)).contains("left join esoft_del_z t1 on t1.id = t0.organization_id and t1.deleted = false where"); } - }