Sql z left join na JdbcDAOSupport

0

Czesc, chcialabym przelozyc na Springa zapytanie ktore sklada sie z joinow. Jest tak: mam 3 tabele: A, B i C.

 
A: 
id, name, bId (klucz do tabeli B)

B:
id, name cId (klucz do tabeli C)

C:
id, name

Piszac w sqlu, gdybym chciala wyciagnac : A.name, A.bId, B.name, B.cId, C.name

to mniej wiecej napisalabym tak (moge miec byka gdzies, bo pisze z glowy):

 
SELECT A.name, A.bId, B.name, B.cId, C.name
FROM C
LEFT JOIN B ON B.cId = C.id
LEFT JOIN A ON A.bId = B.id

i spoko, w 1 zapytaniu mam co chce. A teraz mam Springa i JdbcDaoSupport. Potworzylam modele, rowMappery i przechodze do pisania DAO. I teraz sie
zastanawiam jak to zrobic? W sumie najfajniej byloby napisac :

 
getJdbcTemplate().query("SELECT A.name, A.bId, B.name, B.cId, C.name
FROM C
LEFT JOIN B ON B.cId = C.id
LEFT JOIN A ON A.bId = B.id") 

tylko wtedy jaki RowMapper? co ma zwracac? Napisalam 3 osobne modele i rowMappery dla tabel A,B,C. A moze powinnam stworzyc model i rowMapper ABC (ktory
bedzie zawieral pola: A.name, A.bId, B.name, B.cId, C.name) ? I wtedy w DAO bym napisala sobie tego query-select'a i w 1 zapytniu mialabym co chce.

Tylko czy tak jest poprawnie? Wydaje mi sie ze powinnam uzyc 3 modeli skoro sa 3 tabele. Ale wtedy bede miec 3 zapytania (bo wpierw z A bede szukac
name oraz A.bId, potem z B bede szukac name oraz B.cId a potem z C bede szukac C)

Nie wiem - ktore podejscie jest wlasciwe? a moze jeszcze inne?

bede wdzieczna za wszystkie rady,
pzdr,
misty

0

Jakie są relacje między tymi tabelami (1-1, czy 1-wiele)?

Jeżeli 1-1 to robisz taki model:


class C {
  String name;
  B b;
}

class B {
  String name;
  A a;
}

class A {
  String name;
}

i z rowmapper zwracasz C.

1 użytkowników online, w tym zalogowanych: 0, gości: 1