@Test public void testSimpleJoinOr() throws Exception { Dao<Bar, Integer> barDao = createDao(Bar.class, true); Dao<Baz, Integer> bazDao = createDao(Baz.class, true); Bar bar1 = new Bar(); bar1.val = 2234; assertEquals(1, barDao.create(bar1)); Bar bar2 = new Bar(); bar2.val = 324322234; assertEquals(1, barDao.create(bar2)); Baz baz1 = new Baz(); baz1.bar = bar1; baz1.val = 423423; assertEquals(1, bazDao.create(baz1)); Baz baz2 = new Baz(); baz2.bar = bar2; baz2.val = 9570423; assertEquals(1, bazDao.create(baz2)); QueryBuilder<Bar, Integer> barQb = barDao.queryBuilder(); barQb.where().eq(Bar.VAL_FIELD, bar1.val); List<Baz> results = bazDao.queryBuilder().query(); assertEquals(2, results.size()); QueryBuilder<Baz, Integer> bazQb = bazDao.queryBuilder(); bazQb.where().eq(Baz.VAL_FIELD, baz2.val); results = bazQb.joinOr(barQb).query(); assertEquals(2, results.size()); assertEquals(bar1.id, results.get(0).bar.id); assertEquals(bar2.id, results.get(1).bar.id); bazQb.reset(); bazQb.where().eq(Baz.VAL_FIELD, baz2.val); results = bazQb.join(barQb, JoinType.INNER, JoinWhereOperation.OR).query(); assertEquals(2, results.size()); assertEquals(bar1.id, results.get(0).bar.id); assertEquals(bar2.id, results.get(1).bar.id); // now do join which should be an AND bazQb.reset(); bazQb.where().eq(Baz.VAL_FIELD, baz2.val); results = bazQb.join(barQb).query(); // should find no results assertEquals(0, results.size()); }
@Test public void testSimpleJoinColumnArg() throws Exception { Dao<Bar, Integer> barDao = createDao(Bar.class, true); Dao<Baz, Integer> bazDao = createDao(Baz.class, true); Bar bar1 = new Bar(); int val = 1313123; bar1.val = val; assertEquals(1, barDao.create(bar1)); Bar bar2 = new Bar(); bar2.val = val; assertEquals(1, barDao.create(bar2)); Baz baz1 = new Baz(); baz1.bar = bar1; baz1.val = val; assertEquals(1, bazDao.create(baz1)); Baz baz2 = new Baz(); baz2.bar = bar2; baz2.val = val + 1; assertEquals(1, bazDao.create(baz2)); Baz baz3 = new Baz(); baz1.bar = bar2; baz1.val = val; assertEquals(1, bazDao.create(baz3)); Baz baz4 = new Baz(); baz2.bar = bar1; baz2.val = val; assertEquals(1, bazDao.create(baz4)); QueryBuilder<Bar, Integer> barQb = barDao.queryBuilder(); barQb.where().eq(Bar.VAL_FIELD, new ColumnArg("baz", Baz.VAL_FIELD)); List<Baz> results = bazDao.queryBuilder().query(); assertEquals(4, results.size()); results = bazDao.queryBuilder().join(barQb).query(); assertEquals(1, results.size()); assertEquals(bar1.id, results.get(0).bar.id); }