@Test public void testLeftJoinTwoColumns() throws Exception { Dao<Foo, Integer> fooDao = createDao(Foo.class, true); Dao<StringColumnArg, Integer> scaDao = createDao(StringColumnArg.class, true); Foo foo1 = new Foo(); foo1.val = 123213213; foo1.stringField = "stuff"; fooDao.create(foo1); StringColumnArg sca1 = new StringColumnArg(); sca1.str1 = foo1.stringField; scaDao.create(sca1); StringColumnArg sca2 = new StringColumnArg(); sca2.str1 = "something eles"; scaDao.create(sca2); QueryBuilder<Foo, Integer> fooQb = fooDao.queryBuilder(); QueryBuilder<StringColumnArg, Integer> scaQb = scaDao.queryBuilder(); scaQb.join(StringColumnArg.STR1_FIELD, Foo.STRING_COLUMN_NAME, fooQb); List<StringColumnArg> results = scaQb.query(); assertNotNull(results); assertEquals(1, results.size()); assertEquals(sca1.id, results.get(0).id); scaQb.reset(); scaQb.join( StringColumnArg.STR1_FIELD, Foo.STRING_COLUMN_NAME, fooQb, JoinType.LEFT, JoinWhereOperation.AND); results = scaQb.query(); assertNotNull(results); assertEquals(2, results.size()); assertEquals(sca1.id, results.get(0).id); assertEquals(sca2.id, results.get(1).id); }
@Test public void testJoinTwoColumns() throws Exception { Dao<Foo, Integer> fooDao = createDao(Foo.class, true); Dao<StringColumnArg, Integer> scaDao = createDao(StringColumnArg.class, true); Foo foo1 = new Foo(); foo1.val = 123213213; foo1.stringField = "stuff"; fooDao.create(foo1); Foo foo2 = new Foo(); foo2.stringField = "not stuff"; fooDao.create(foo2); StringColumnArg sca1 = new StringColumnArg(); sca1.str1 = foo1.stringField; scaDao.create(sca1); StringColumnArg sca2 = new StringColumnArg(); sca2.str1 = foo2.stringField; scaDao.create(sca2); StringColumnArg sca3 = new StringColumnArg(); sca3.str1 = "some other field"; scaDao.create(sca3); QueryBuilder<Foo, Integer> fooQb = fooDao.queryBuilder(); fooQb.where().eq(Foo.VAL_COLUMN_NAME, foo1.val); QueryBuilder<StringColumnArg, Integer> scaQb = scaDao.queryBuilder(); scaQb.join(StringColumnArg.STR1_FIELD, Foo.STRING_COLUMN_NAME, fooQb); List<StringColumnArg> results = scaQb.query(); assertNotNull(results); assertEquals(1, results.size()); assertEquals(sca1.id, results.get(0).id); fooQb.reset(); fooQb.where().eq(Foo.VAL_COLUMN_NAME, foo2.val); scaQb.reset(); scaQb.join(StringColumnArg.STR1_FIELD, Foo.STRING_COLUMN_NAME, fooQb); results = scaQb.query(); assertNotNull(results); assertEquals(1, results.size()); assertEquals(sca2.id, results.get(0).id); }
@Test public void testColumnArgString() throws Exception { Dao<StringColumnArg, Integer> dao = createDao(StringColumnArg.class, true); StringColumnArg foo1 = new StringColumnArg(); String val = "3123123"; foo1.str1 = val; foo1.str2 = val; assertEquals(1, dao.create(foo1)); StringColumnArg foo2 = new StringColumnArg(); foo2.str1 = val; foo2.str2 = val + "..."; assertEquals(1, dao.create(foo2)); QueryBuilder<StringColumnArg, Integer> qb = dao.queryBuilder(); qb.where().eq(StringColumnArg.STR1_FIELD, new ColumnArg(StringColumnArg.STR2_FIELD)); List<StringColumnArg> results = qb.query(); assertNotNull(results); assertEquals(1, results.size()); assertEquals(foo1.id, results.get(0).id); }