- Apple iPhone 17 - alap
- Google Pixel topik
- Samsung Galaxy S24 FE - később
- Xiaomi 13 Pro - szerencsés szám
- Hivatalos a OnePlus 13 startdátuma
- Motorola Edge 50 Neo - az egyensúly gyengesége
- Kedvcsináló videó is jött a Vivo X300 szériához
- Huawei Watch GT 6 és GT 6 Pro duplateszt
- Motorola Edge 40 - jó bőr
- Samsung Galaxy A56 - megbízható középszerűség
Ú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?:))
- Nintendo Switch 2 újszerű állapotban
- Új 2K Gamer PC Ryzen 5 9600X/RTX 3070 Ti 8Gb/2x8Gb DDR5 6000Mhz/500Gb NVME SSD/2-3Év gari
- Asztali PC , R5 8400F , RTX 3070 , 16GB DDR5 , 512GB NVME , 1TB HDD
- Intel Core i9-14900K - Cores x 24
- Új Gamer PC Ryzen 5 9600X/RTX 3060 12Gb/2x8Gb DDR5 6000Mhz/500Gb NV3 NVME SSD/2-3Év gari
- Xiaomi 11T 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! MSI B450 R5 5500 16GB DDR4 512B SSD GTX 1070 8GB Chieftec BD-25B-350GPB Zalman 500W
- BESZÁMÍTÁS! MSI B450 R7 5800X 32GB DDR4 512GB SSD RX 6800 16GB ZALMAN Z1 Plus A-DATA 750W
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- HIBÁTLAN iPhone 14 Pro 256GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS3519
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest