Ejemplo n.º 1
0
  @Test
  public void testInnerJoin() throws Exception {
    Dao<Bar, Integer> barDao = createDao(Bar.class, true);
    Dao<Baz, Integer> bazDao = createDao(Baz.class, true);
    Dao<Bing, Integer> bingDao = createDao(Bing.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;
    assertEquals(1, bazDao.create(baz1));
    Baz baz2 = new Baz();
    baz2.bar = bar2;
    assertEquals(1, bazDao.create(baz2));

    Bing bing1 = new Bing();
    bing1.baz = baz1;
    assertEquals(1, bingDao.create(bing1));
    Bing bing2 = new Bing();
    bing2.baz = baz2;
    assertEquals(1, bingDao.create(bing2));

    QueryBuilder<Bar, Integer> barQb = barDao.queryBuilder();
    barQb.where().eq(Bar.VAL_FIELD, bar1.val);

    QueryBuilder<Baz, Integer> bazQb = bazDao.queryBuilder();
    assertEquals(2, bazQb.query().size());
    bazQb.join(barQb);

    List<Bing> results = bingDao.queryBuilder().join(bazQb).query();
    assertEquals(1, results.size());
    assertEquals(bing1.id, results.get(0).id);
    assertEquals(baz1.id, results.get(0).baz.id);
    bazDao.refresh(results.get(0).baz);
    assertEquals(bar1.id, results.get(0).baz.bar.id);
  }