- mefistofeles: Az elhízás nem akaratgyengeség! 2 Ahogy én csinálom.......
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MasterDeeJay: RAM gondolatok: Mennyi a minimum? DDR3 is jó?
- aquark: KGST processzorok 1984-ig
- pointer4: Force Feedback az ülésben is - Házi Készítésű Övfeszítő
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- lkristóf: Prohardver fórum userscript – hogy lásd, mikor neked válaszoltak
- sziku69: Szólánc.
Ú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?:))
- Honor Magic6 Pro - kör közepén számok
- Milyen routert?
- CADA, Polymobil, és más építőkockák
- ThinkPad (NEM IdeaPad)
- OLED TV topic
- Mobil flották
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Sony WF-1000XM6 – ez évi etalon?
- Vicces képek
- További aktív témák...
- Akció! Felsőkategóriás Gamer PC! I9 14900K / RTX 5080 16GB / 32GB RAM / 2TB Nvme SSD
- Kuriózum: Ozark Trail (amerikai) fejlámpa 600 lumen
- BESZÁMÍTÁS! ASRock B550 R5 5600X 32GB DDR4 512GB SSD RX 6800 16GB Zalman S2 TG Seasonic 750W
- Készpénzes / Utalásos Számítógép felvásárlás! Személyesen vagy Postával!
- Azonnali készpénzes GAMER / üzleti notebook felvásárlás személyesen / csomagküldéssel korrekt áron
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


