Hirdetés

Új hozzászólás Aktív témák

  • togvau
    senior tag

    Amikor meghívod a lekérdezést a Repository metódusban, az elkér egy aktuális sessiont az EntityManager-től. Mivel lazy, azon a ponton nem oldja fel a hivatkozást, csak egy B proxy-t kap az A objektum. Amikor visszakapod A-t, a session már ment a lecsóba, és hiába hívod meg a gettert, a proxy már nem találja a session-t.
    Na többek között erre is való a @Transactional, mert megmondja az EntityManager-nek, hogy hol kezdődik a session lifecycle. Ha nincs @Transactional, akkor a Repository metódusban kéne inícializálni a lazy relációkat.

    Köszi, így érthető!
    Manuálisan pedig entitymanager begintransactionnel lehet kezdeni, és flush-al lezárni?

    Ezt viszont megint nem értem:
    Ez volt: (működött az autowired)
    @Repository
    public interface PhotosRepo extends CrudRepository<Photo, Long> {

    Ez lett:
    @Repository
    public abstract class PhotosRepo implements CrudRepository<Photo, Long> {
     @PersistenceContext
     private EntityManager em;

    és mellé autowirednél:
    .NoSuchBeanDefinitionException: No qualifying bean of type 'org..asd.db.repository.PhotosRepo' available: expected at least 1 bean which qualifies as autowire candidate.
    Miért?

Új hozzászólás Aktív témák