Пример #1
0
  @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());
  }
Пример #2
0
  @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);
  }