Spring datajpaマルチテーブルUNIONALLクエリを条件付きページ処理で並べ替え:レコードが解決された後、メソッドが見つかりません:2018年11月13日15:22:00



Spring Data Jpa Multi Table Union All Query Sorted Conditional Page Processing



要件:Mysqlデータベース属性が異なる2つのテーブルがあり、特定の条件に従ってクエリを実行する必要があり、結果がマージされて並べ替えられます。

製品が2つのテーブルを2つのセクションに分割して、それぞれを表示し、それらを分離します。



製品マネージャーは、それを達成できると述べました。製品はSQL共同クエリA UNION ALLBを書き込みます。

その開発は、その後のソートページ付けを処理します。



Daoレイヤー

@Query(nativeQuery = true,value = 'SELECT re.id,re.i_amount,re.i_share,re.create_time,re.type FROM ( ' + 'SELECT id AS id, i_amount AS i_amount, i_share AS i_share, create_time AS create_time , 1 AS type ' + 'FROM f_project where project_id = :projectId ' + 'UNION ALL ' + 'SELECT id AS id, i_amount AS i_amount, i_share AS i_share, create_time AS create_time ,2 AS type ' + 'FROM l_project where project_id = :projectId ) re' ,countQuery = 'SELECT count(re.id) FROM ( SELECT id FROM f_project where project_id = :projectId UNION ALL SELECT id FROM l_project where project_id = :projectId ) as re') Page find(@Param('projectId') long projectId, Pageable pageable)

サービスレイヤーコール

Pageable pageable = PageRequest.of(pageQueryDto.getPage() - 1, pageQueryDto.getSize(), Sort.Direction.fromString(pageQueryDto.getDirection()), propertie) Page page = projectRepository.find(projectId, pageable)