@Test void testMapRows2Types_useCache_noHints() { DbOomQuery q = DbOomQuery.query(sql(TSQL)); List<Object[]> result = q.cacheEntities(true).list(Girl2.class, Boy.class); assertEquals(3, result.size()); Girl2 girl1 = (Girl2) result.get(0)[0]; Girl2 girl2 = (Girl2) result.get(1)[0]; Girl2 girl3 = (Girl2) result.get(2)[0]; assertTrue(girl1.equals(girl2)); assertTrue(girl1 == girl2); assertFalse(girl3 == girl1); Boy boy1 = (Boy) result.get(0)[1]; Boy boy2 = (Boy) result.get(1)[1]; Boy boy3 = (Boy) result.get(2)[1]; assertTrue(boy1.id != boy2.id); assertFalse(boy1 == boy2); assertFalse(boy2 == boy3); assertNull(girl1.getBoys()); assertNull(girl3.getBoys()); }
@Test void testMapRows2Types_useCache_noHints_LEFT() { DbOomQuery q = DbOomQuery.query(sql(TSQL_LEFT)); List<Object[]> result = q.cacheEntities(true).list(Girl2.class, Boy.class); assertEquals(4, result.size()); Girl2 girl0 = (Girl2) result.get(0)[0]; Girl2 girl1 = (Girl2) result.get(1)[0]; Girl2 girl2 = (Girl2) result.get(2)[0]; Girl2 girl3 = (Girl2) result.get(3)[0]; assertEquals("Emma", girl0.name); assertTrue(girl1.equals(girl2)); assertTrue(girl1 == girl2); assertFalse(girl3 == girl1); Boy boy0 = (Boy) result.get(0)[1]; Boy boy1 = (Boy) result.get(1)[1]; Boy boy2 = (Boy) result.get(2)[1]; Boy boy3 = (Boy) result.get(3)[1]; assertNull(boy0); assertTrue(boy1.id != boy2.id); assertFalse(boy1 == boy2); assertFalse(boy2 == boy3); assertNull(girl1.getBoys()); assertNull(girl3.getBoys()); }
@Test void testMapRows2Types_useCache_useHints_1perRow() { DbOomQuery q = DbOomQuery.query(sql(TSQL)); List<Girl2> result2 = q.withHints("g", "g.boys").cacheEntities(true).list(Girl2.class, Boy.class); assertEquals(3, result2.size()); Girl2 girl1 = result2.get(0); Girl2 girl2 = result2.get(1); Girl2 girl3 = result2.get(2); assertTrue(girl1.equals(girl2)); assertTrue(girl1 == girl2); assertFalse(girl3 == girl1); assertNotNull(girl1.getBoys()); assertEquals(2, girl1.getBoys().size()); assertNotNull(girl3.getBoys()); assertEquals(1, girl3.getBoys().size()); assertEquals("Hugo", girl3.getBoys().get(0).name); }
@Test void testMapRows2Types_useCache_useHints_1perRow_LEFT() { DbOomQuery q = DbOomQuery.query(sql(TSQL_LEFT)); List<Girl2> result2 = q.withHints("g", "g.boys").cacheEntities(true).list(Girl2.class, Boy.class); assertEquals(4, result2.size()); Girl2 girl0 = result2.get(0); Girl2 girl1 = result2.get(1); Girl2 girl2 = result2.get(2); Girl2 girl3 = result2.get(3); assertTrue(girl1.equals(girl2)); assertTrue(girl1 == girl2); assertFalse(girl3 == girl1); assertNull(girl0.getBoys()); assertNotNull(girl1.getBoys()); assertEquals(2, girl1.getBoys().size()); assertNotNull(girl3.getBoys()); assertEquals(1, girl3.getBoys().size()); assertEquals("Hugo", girl3.getBoys().get(0).name); }