Hirdetés
- Milyen okostelefont vegyek?
- Honor Magic6 Pro - kör közepén számok
- Honor Magic8 Lite - a félig sikerült bűvésztrükk
- Telekom mobilszolgáltatások
- Xiaomi 15T - reakció nélkül nincs egyensúly
- Határozatlan időre kiszáll az Asus a mobilbizniszből
- Így nézhet ki a Huawei Pura 90
- Komoly kihívót küldött a konkurenciára a Honor
- Xiaomi 15 - kicsi telefon nagy energiával
- Fotók, videók mobillal
Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
jetarko
#6225
üzenetére
Duplázódás vagy többszöröződés van?
Most hogy láttam a kódod, előjöttek a régi emlékeim.

Nálam többszöröződés jött elő, az adatszerkezet kicsit más volt, de a lényeg ugyanaz: egy entitásban több (egymástól független) lista eager fetch-csel.A problémám az volt, hogy a listák ugyan kis elemszámúak voltak, de többnyire nem 1 elemet tartalmaztak, hanem 2-6 körül. Ami azt eredményezte, hogy a Hibernate a háttérben megcsinálta ezek Descartes-szorzatát, tehát egy 3 elemű lista megtriplázta a másik lista elemeit. (És a Hibernate szerint ez így normális.)
Esetleg érdemes lehet bekapcsolnod a show_sql kapcsolót, hogy megnézhesd, milyen sql lekérdezést gyárt, és azt külön elpattintva milyen resultsetet kapsz. Ne számíts arra, hogy a Hibernate a háttérben majd megszűri neked a duplikátumokat.
Már jó rég volt, de ha jól emlékszem, végül az lett a megoldás, hogy a listákat külön-külön select töltötte fel. A design nem engedte meg, hogy Settel bohóckodjak.
-
floatr
veterán
válasz
jetarko
#6225
üzenetére
Pedig nekem is van hasonló mapping pár, és nem látok benne hibát. Kipróbáltam a saját alkalmazásban átírni a collection-t EAGER-re, de akkor sem csinálta ezt. Azt még esetleg megpróbálhatnád, hogy egy teszt erejéig kiszeded az EAGER-t, és a korábban bemásolt kódrészletet kibővíted így:
public Team getTeamById(int id) {
Session session = this.sessionFactory.getCurrentSession();
Team t = (Team) session.get(Team.class, new Integer(id));
// ha lazy collection, akkor így betölti az elemeit egy második query-ben
t.getDrivers().size();
return t;
}Még esetleg azt tudom elképzelni, hogy dialect-függő a dolog. Én eddig mssql, postres és derby adatbázisokkal használtam, de csak elcseszett join-ok esetében találkoztam hasonlóval.
Annyit még érdemes megfontolni, hogy az EAGER típusú kapcsolatok nagyon oda tudnak vágni az alkalmazásnak, ezért is alapértelmezett a LAZY. Én mindenhol ezt használom, és inkább egy OpenSessionInViewFilter-t teszek a web.xml-be. Oda akkor viszont már kelleni fog tranzakció is meg egyebek.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Milyen TV-t vegyek?
- Energiaital topic
- eBay-es kütyük kis pénzért
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Amlogic S905, S912 processzoros készülékek
- Elektromos autók - motorok
- Kerékpárosok, bringások ide!
- Gaming notebook topik
- exHWSW - Értünk mindenhez IS
- Anglia - élmények, tapasztalatok
- További aktív témák...
- 212 - Lenovo IdeaPad Slim 5 (16IMH9) - Intel Core U5 125H, no GPU
- 211 - Lenovo Legion 5 (15ITH6H) - Intel Core i7-11800H, RTX 3060
- 210 - Lenovo IdeaPad 5 Pro (16ARH7) - AMD Ryzen 7 6800HS, RTX 3050Ti
- 209 - Lenovo Yoga Pro 7 (14APH8) - AMD Ryzen 7 7840HS, no GPU
- 206 - Lenovo Legion Slim 7 (16IRH8) - Intel Core i7-13700H, RTX 4060
- Gamer PC - Számítógép! Csere- Beszámítás! R7 5700 / Suprim RTX 3080/ 32GB DDR4 / 500GB SSD
- AKCIÓ! Dell Latitude 5455 14 FHD+ üzleti notebook - Qualcomm X Plus X1 16GB DDR5 512GB SSD W11
- Decathlonos 43-as boxcipő, alig használt, hibátlan állapotban
- HP Victus 16 - 16.1"FHD 144Hz - Ryzen 5 7640HS - 32GB - 1TB - Win11 -RTX 4050 - 1,5 év gari - MAGYAR
- Adata DDR5 5600 RAM 2x8 GB
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: Laptopműhely Bt.
Város: Budapest



