- Megnyugtatta a Netflix a befektetőket, a vámoktól sem tartanak
- Az egész világon terjeszkednek a dollármilliárdos kibercsalók
- Az EU betartatja a szabályokat, mindegy, hogy kik vezetik az óriáscégeket
- Tömeges bevetésre kész az új Huawei AI-chip
- A Deezer zenei kínálatának 18 százalékát már AI generálta
- Milyen NAS-t vegyek?
- One otthoni szolgáltatások (TV, internet, telefon)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Asustor NAS
- Az egész világon terjeszkednek a dollármilliárdos kibercsalók
- Otthoni hálózat és internet megosztás
- Windows 11
- Bittorrent topik
- Linux kezdőknek
- Milyen program, ami...?
Ú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?:))
- Allegro vélemények - tapasztalatok
- Kormányok / autós szimulátorok topikja
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Kerékpárosok, bringások ide!
- Bambu Lab 3D nyomtatók
- Last Epoch
- Tőzsde és gazdaság
- Bemutatkozott és meg is jelent a The Elder Scrolls IV: Oblivion Remastered
- További aktív témák...
- Samsung Galaxy Tab A9+ 5G 64GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 13 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- PS3 Játékok - RÉSZLETEK A LEÍRÁSBAN
- Sony Alpha 7 (2300 expo) + 28-70mm f/3.5-5.6 + Takumar 55mm f1.8 M42 + M42-NEX adapter
- HP Compaq 8200 Elite asztali számítógép PC i5 / 8GB ram / 120GB SSD + 500GB HDD
- Prémium! Csere-Beszámítás! Számítógép PC Játékra! R5 5600X / RTX 4060 / 32Gb DDR4 / 1TB SSD
- LG 42C3 - 42" OLED EVO - 4K 120Hz 0.1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - A9 Gen6 CPU
- iKing.Hu - Samsung Z Flip 6 - Silver Shadow - Használt, szép állapot
- Magyarország piacvezető szoftver webáruháza
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest