- Xiaomi 17 Ultra - jó az optikája
- Apple Watch
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Milyen okostelefont vegyek?
- iPhone topik
- Samsung Galaxy A56 - megbízható középszerűség
- Motorola Edge 50 Ultra - szépen kifaragták
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- Yettel topik
- Mobil flották
Ú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?:))
- Lightyear - befektetési app
- Ford topik
- Soha nem szabta ilyen pénztárcabarátra új CPU-it az Intel
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Xiaomi 17 Ultra - jó az optikája
- Napelem
- Apple Watch
- Konzolokról KULTURÁLT módon
- Samsung Galaxy Felhasználók OFF topicja
- Tőzsde és gazdaság
- További aktív témák...
- LG 45GR65DC-B 45 / 5120x1440 / 200HZ / VA /
- Chieftec Smart Seriels GPS-500A8 80 Plus minősítésű 500W tápegység
- Apple iPhone 13 - 85% Akku - 128GB - Független - Hibátlan
- HONOR Magic8 Lite 5G 512GB + CHOICE Cubuds - Gyári Bontatlan, 2028-ig garanciális
- HONOR Magic8 Pro 5G 12/512GB (Black) - Új, Kártyafüggetlen, 2029-ig garanciális
- ÚJ könyv: Gloviczki Zoltán - A holnapután iskolája
- Lenovo Thinkpad P15 Gen 2 - 82 akkuciklus - 27% ÁFÁS
- Újszerű Acer Nitro 5 - 17.3" QHD 165Hz - i9-12900H - 32GB - 1TB - RTX 4060 - Win11
- BESZÁMÍTÁS! ASUS H110M i5 6500 8GB DDR4 120GB SSD 500GB HDD GTX 1050Ti 4GB Zalman T3 Plus NBASE 600W
- S21 Dobozában 128/8
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest



