diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeBean.java b/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeBean.java index c0ac1e85d..0bc652c12 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeBean.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeBean.java @@ -494,9 +494,6 @@ public class SqlTreeNodeBean implements SqlTreeNode { if (desc.isSoftDelete()) { query.addSoftDeletePredicate(desc.getSoftDeletePredicate(baseTableAlias)); } - for (int i = 0; i < children.length; i++) { - children[i].addSoftDeletePredicate(query); - } } public void addAsOfTableAlias(SpiQuery query) { @@ -522,6 +519,16 @@ public class SqlTreeNodeBean implements SqlTreeNode { */ public SqlJoinType appendFromBaseTable(DbSqlContext ctx, SqlJoinType joinType) { + SqlJoinType sqlJoinType = appendFromAsJoin(ctx, joinType); + if (desc.isSoftDelete()) { + // add the soft delete predicate to the join clause + ctx.append("and ").append(desc.getSoftDeletePredicate(ctx.getTableAlias(prefix))).append(" "); + } + return sqlJoinType; + } + + private SqlJoinType appendFromAsJoin(DbSqlContext ctx, SqlJoinType joinType) { + if (nodeBeanProp instanceof BeanPropertyAssocMany) { BeanPropertyAssocMany manyProp = (BeanPropertyAssocMany) nodeBeanProp; if (manyProp.isManyToMany()) {