spring data jpa会用の生sql検索方式


目次
 
(1)あるフィールドでデータを統計する
(2)いくつかのテーブルがビュークエリを作成します。
(1)あるフィールドでデータを統計する
                  ここではdetectSnに基づいて統計を行い、重複データ(DISTINCT)をフィルタリングし、DISTINCTをフィルタリングしなくてもいいです。後は条件を調べます。
                  伝えた値は上で取る必要があります。  パラメータは価格@Param(「value」)が必要です。
    @Query(value = "select count(DISTINCT detectSn) from tbl_zjpt_vehicleInfo where ifExistAj = :ifExistAj", nativeQuery = true)
    Integer queryByIfExistAj(@Param("ifExistAj")String ifExistAj);
(2)いくつかのテーブルがビュークエリを作成します。
           new com.dcsoft.vo.OutViewVehicleInfo    info        。as    info      。 info          。        。   C     p , c.   p.                   。
            後はwhere条件です。パラメータは上記と同じです。多くは言いません。
      イベントを転送する必要があります。  主な照会表をentityにアップロードしてください。
public interface OVVREepository extends Jparepository<Entity、String>、JpaSpecification Exector<Entity>、Paging AndSortingRepository<Entinty、String>
     page pageパラメータはinfoです。  対応する上のinfoはentityではありません。
    @Query(value = "select new com.vo.OutViewVehicleInfo(c.drId as drId ,c.vehicleNo as vehicleNo," +
            "c.insertTime as insertTime," +
            "c.plateColorCode as plateColorCode,c.detectSn as detectSn,c.detectType as detectType," +
            "c.detectDate as detectDate,p.detectResult as detectResult) " +
            "FROM OutDetectRecordEntity c , OutDetectReportEntity p WHERE c.drId = p.drId and c.vehicleNo like :vehicleNo ")
    Page queryAllByVehicleNo(@Param("vehicleNo") String vehicleNo,Pageable pageable);
         以下のコードは対応しています。  page  引数は  ページ番号  各ページのデータ数  並べ替え方法
PageRequest pageRequest = new PageRequest(vehicleQueryParam.getPageNum() - 1,
                vehicleQueryParam.getPageSize(), new Sort(new Order(Direction.DESC, "insertTime")));
        Page page = null;
 他のものにあったらまた更新してください。
native Query=trueとない違いがあります。
native Query=trueがあるときは、元のsql文を実行することができます。つまり、このsqlをデータベースにコピーして、パラメータ値をあげると実行できます。
@Query(value="select*from producture where audit uid=?1 and processu=0",native Query=true)List findAllByProductAuditId; 
(3)ここ5年の年間データ量を統計する(連結表の照会も同じ方式である)
@Query(value = "select new com.dachengsoft.yszhjc.pojo.zhclglInfo.CountVehSum (count(a.clid) as amount,SUBSTRING(a.jdrq,1,4) as jdrq) from CheliangEntity a where ?1 < a.jdrq GROUP BY substring(a.jdrq,1,4)")
List count5(String year);
主に、あなたが必要とするフィールドには、これらのデータを受信するエンティティがありません。
解析:まず、受信infoフィールドを作成するには、as後のamountとjdrqが必要です。  フィールド名は同じで、データの種類は同じです。
           第二に、受信したinfoには必ず全参構造方法が必要です。
    二つの表の中のいくつかのフィールドを調べたいというなら、この方法で新しいvoを作成します。  infoクラスでは、フィールド名は戻りデータのフィールド名と一致しなければなりません。