diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java b/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java index 1b6ac4288..97d3a92a4 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/SqlTreeNodeExtraJoin.java @@ -100,8 +100,9 @@ public class SqlTreeNodeExtraJoin implements SqlTreeNode { if (pathContainsMany) { // "promote" to left outer as the path contains a many - assocBeanProperty.addJoin(SqlJoinType.OUTER, prefix, ctx); - } else if (!manyToMany) { + joinType = SqlJoinType.OUTER; + } + if (!manyToMany) { assocBeanProperty.addJoin(joinType, prefix, ctx); } diff --git a/src/test/java/com/avaje/tests/basic/TestM2MCascadeOne.java b/src/test/java/com/avaje/tests/basic/TestM2MCascadeOne.java index 84d3014c6..dab31b421 100644 --- a/src/test/java/com/avaje/tests/basic/TestM2MCascadeOne.java +++ b/src/test/java/com/avaje/tests/basic/TestM2MCascadeOne.java @@ -2,6 +2,7 @@ package com.avaje.tests.basic; import java.util.List; +import com.avaje.ebean.Query; import org.junit.Test; import com.avaje.ebean.BaseTestCase; @@ -42,4 +43,16 @@ public class TestM2MCascadeOne extends BaseTestCase { Ebean.save(u1); } + + @Test + public void testRawPredicate_with_ManyToManyPath() { + + Query query = Ebean.find(MUser.class) + .select("userid") + .where().raw("roles.roleid in (?)", 24) + .query(); + + query.findList(); + + } }