package org.tests.model.inheritmany; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.Query; import org.junit.Assert; import org.junit.Test; import java.util.Random; import static org.assertj.core.api.Assertions.assertThat; public class TestMediaInheritanceJoinToMany extends BaseTestCase { @Test public void test() { String name = "nopic" + new Random().nextInt(); MProfile profileWithNoPic = new MProfile(); profileWithNoPic.setName(name); Ebean.save(profileWithNoPic); Query<MProfile> query = Ebean.find(MProfile.class).fetch("picture").where().eq("name", name).query(); // assert we get the profile with a null picture MProfile profile = query.findUnique(); Assert.assertNotNull(profile); // select t0.id c0, t0.name c1, t1.type c2, t1.id c3, t1.url c4, t1.note c5 // from profile t0 // left join media t1 on t1.id = t0.picture_id and t1.type = 'Picture' // where t0.name = ? ; --bind(nopic) // specifically t1.type = 'Picture' ... on on the join and not in the where String generatedSql = query.getGeneratedSql(); assertThat(generatedSql).contains("from mprofile t0 left join mmedia t1 on t1.id = t0.picture_id and t1.type = 'Picture' "); assertThat(generatedSql).contains("where t0.name = ? "); } }