Keresés

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

  • floatr

    veterán

    válasz togvau #10985 üzenetére

    Namost ez egy elég hosszú téma, de röviden itt van egy példa, ami alapján tudsz hozzácsapni összetetteb dolgokat egy JPA repo-hoz. Ezt most csak egy text editorban dobtam össze, de a lényeg itt van. Van egy JPA repository-d, amit a framework majd implementál magának. Kell egy új interface, amiben a saját új metódusaid vannak. Ezt implementálod egy külön osztályban, valamint az új interface-t hozzácsapod a JPA repo-hoz az extends-ben. Innentől kezdve a PhotosRepo típust injektálod be mindenhová, mert a Spring ez alapján készít saját implementációt.

    // létrehozol egy inteface-t a saját metódusaidnak
    public interface PhotosRepoCustom {...}

    // meghagyod a Spring Data repository-dat is, de hozzácsapod a saját interface-t is
    @Repository
    public interface PhotosRepo extends CrudRepository<Photo, Long>, PhotosRepoCustom {...}

    // implementálod az új interface-t
    public class PhotosRepositoryImpl implements PhotosRepoCustom {
        @PersistenceContext
        EntityManager em;
        public List<A> findAllCustom() {
            ....
        }
    }

    De a @Query annotációval használhatsz JOIN FETCH-et is egy query metódusban pl.:
    @Repository
    public interface PhotosRepo extends CrudRepository<Photo, Long> {
        ...
        @Query("SELECT a FROM A a INNER JOIN FETCH a.b b")
        public List<A> find();
    }

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