JPAクエリーはカスタムクラス(カスタムEntity)にマッピングされます。

3559 ワード

JPAクエリは2つに分けられます。
・第一は、元のSQLを利用して照会することであり、このように戻ってくるデータフォーマットはList

· JPA , ( , )

  • SQL :
//            (   Entity)
@Query(value = "select id, create_time, comment_times, thumbsup, content, img " +
            "from whisper limit :page, :pagesize", nativeQuery = true)
List<Object[]> selectWhisperByPage(@Param("page") int page, @Param("pagesize") int pagesize);

ListList 。 ( ) SQL 。 List Listの であり、ObjectとT のエンティティ の は び が に することに が である。
  • のSQLを わない:
  • //RArticle       (   Entity)
    @Query("select new orz.reinvent.wheel.entity.Response.RArticle" +
                "(a.id, ai.item, a.title, a.article_content, a.pic) " +
                "from orz.reinvent.wheel.entity.ArticleEntity.Article a, " +
                "orz.reinvent.wheel.entity.ArticleEntity.Article_item ai where a.item = ai.id")
    Page<RArticle> selectArticleByPage(Pageable pageable);
    
    オリジナルのSQLを しない は、newのキーワードを いてマッピングを する があり、ここでSQLに かれたiditemなどは、RArticleの と と の で することが である。その のEntityは、その の をはっきり く があります。ツール を します。Java List Object[]をList T List List(1)List List(2)に します。
    これは が に っている から した き です。あまりにも くの を べていないので、 き はあまりよくないかもしれません。でもここまで くと、JPAはもうあきらめました。 くさいです。なぜ では くのmybatisが われているのか、 かりました。 かに ですから。カスタムクラスを する は、mybatisが @ResultTypeに すればいいです。