- Motorola Edge 50 Neo - az egyensúly gyengesége
- Apple iPhone 17 - alap
- One mobilszolgáltatások
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Xiaomi 15T Pro - a téma nincs lezárva
- Google Pixel topik
- Google Antigravity - ennyi volt?
- Szívós, szép és kitartó az új OnePlus óra
- Megérkezett a Samsung Galaxy A37 és Galaxy A57
- Xiaomi 14 Ultra - Leica hercegnő
Új hozzászólás Aktív témák
-
#39560925
törölt tag
Ha egy service layer-beli osztályban van egy @Transactional metódus, ami meghívja egy DAO osztály metódusát, amely osztályban be van injektálva egy EntityManager @PersistenceContext-tel, akkor ennek az EntityManagernek a perzisztenciakontextusa megmarad a hívó service layer-beli metódusban is?
Most kísérleti jelleggel azt csinálom, hogy a RestController osztály metódusát jelöltem @Transactional-nek és az közvetlen hívja a DAO osztály metódusát, ami egy MovieEntityvel tér vissza, de amikor a RestController metódusa átadja a Jackson JSON parsernek a MovieEntityt, akkor mintha már nem lenne meg a perzisztenciakontextus, mert a hibernate proxy objektum megszűnt, és nem éri el a kapcsolódó entitásokat:
com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: com.movietime.model.ActorsEntity.movies, could not initialize proxy - no Session
Próbálkoztam azzal, hogy EAGER fetchinget állítok be minden Entitás osztályban, és akkor nem lenne ilyen probléma, de akkor a túl sok bi-directional many-to-many asszociáció miatt megbolondul a hibernate és a Query.getSingleResult() már vissza se tér.
Kerestem olyan megoldást is, hogy lehessen korlátozni az EAGER fetching mélységét, de csak olyat találtam, hogy a LAZY-t lehet optimalizálni @BatchSize-zal. Viszont ez nekem nem jó, mert a JSON parserig már nem jut el a hibernate sessionje, vagy persistence contextje, nem tudom hogy hívjam.
Csinálhatnám azt is, hogy a DAO rétegben olyan lekérdezéseket írok kézzel, hogy lekérem a filmet, aztán lekérem a hozzá kapcsolódó színészeket, producereket, mindenkit, és összetákolom a kapcsolatokat, de ez egyrészt nagyon lábbal hajtós, másrészt az adatbáziskapcsolattal nagyon pazarló lenne. Jobb lenne, ha ezt a hibernate elintézné.
Az is jó lenne, ha a @Transactional úgy működne, ahogy a hsz elején a kérdésben feltettem, de nekem úgy tűnik, mintha nem így történne. Lehet azért, mert nem JTA típusú tranzakcióim vannak, hanem JPA?
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- 5 darab WIFI/LAN biztonsági kamera, 3 kültéri és 2 beltéri
- Xiaomi 15 fehér független mobiltelefon 2 év garanciával
- teljesen ÚJ Apple Watch Ultra 3 49mm Black Titanium !! aktiválástól 1 ÉV nemzetközi APPLE GARANCiA
- Dell WD15 type-c dokkoló 130W-os töltővel
- FLSUN V400 3D nyomtató megkímélt, 680 üzemóra
- Konzol felvásárlás!! Nintendo Switch
- HIBÁTLAN iPhone 12 Pro 128GB Gold-1 ÉV GARANCIA - Kártyafüggetlen, MS4441, 100% Akksi
- Xiaomi Redmi Note 9 128GB, Kártyafüggetlen, 1 Év Garanciával
- Apple iPhone 14 Pro Max 128 GB Black 100% Akku 1 év Garancia Beszámítás Házhozszállítás
- Honor laptop i5-12500H / RTX 2050 / 16GB RAM / 512GB SSD / 2K kijelző Erős, prémium gép!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

