- Alacsony profilú, madzagmentes klaviatúrák jöttek a Razer színeiben
- ASUS ROG csúcslap érkezett, ezúttal a "lopakodó" fajtából
- Átvette a DRAM-piac trónját az SK Hynix a Samsungtól
- Pénztárcabarát, ugyanakkor trendi mikrotorony jött a Jonsbótól
- A Linux támogatását vágja meg leginkább az Intel leépítése
- Milyen belső merevlemezt vegyek?
- Nikon DSLR topik
- DDR4 vs DDR5 vs DDR6 – melyik kell neked?
- Először égett le egy újságnál a GeForce RTX 5090
- Milyen billentyűzetet vegyek?
- Milyen videókártyát?
- Samsung LCD és LED TV-k
- Intel Core Ultra 3, Core Ultra 5, Ultra 7, Ultra 9 "Arrow Lake" LGA 1851
- TCL LCD és LED TV-k
- Milyen RAM-ot vegyek?
Ú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 belső merevlemezt vegyek?
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- Nikon DSLR topik
- Milyen légkondit a lakásba?
- PlayStation 5
- DDR4 vs DDR5 vs DDR6 – melyik kell neked?
- Gitáros topic
- További aktív témák...
- HP 14 Pavilion FHD IPS i5-1135G7 4.2Ghz 16GB RAM 512GB SSD Intel Iris XE Graphics Win11 Garancia
- Aoc 1080p 75hz 27" GRÁTISZ ALZAERGO MONITORKAR!
- HP 15 Pavilion FHD LED Matt Ryzen5 5500U 4.0Ghz 8GB RAM 256GB SSD Radeon RX Vega7 Win11 Garancia
- Gamer Intel Core i5 12400 / 16GB DDR4 / GTX 1660 SUPER 6GB / 256GB NVME SSD / 1TB HDD /
- RAM --- SoDIMM --- SD-DDR1-2-3
- Motorola E40 64GB, Kártyafüggetlen, 1 Év Garanciával
- CSX 2x2GB (4GB) DDR 800 MHz kit
- HIBÁTLAN iPhone 13 Pro 256GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3073, 100% Akkumulátor
- GYÖNYÖRŰ iPhone 15 Pro 512GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3070
- HP EliteBook 830 G8 i5-1135G7 16GB 256GB 1 év garancia
Állásajánlatok
Cég: FOTC
Város: Budapest