23835


SpringJPAの、org.springframework.data.domain.Pageをリクエストする際、下記のようなエラーが発生します。

[code]

    Caused by: java.lang.IllegalArgumentException: Count query validation failed for method
    Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
    
[/code]

モデルは多対多で、モデルのマッピングは正常に行えており、  
下記メソッドをコメントアウトすることでエラーは解消します。  
発行メソッドは下記です。

[code]

    @Query("select e from Entity e "
            + "LEFT JOIN FETCH e.relation c "
            + "LEFT JOIN FETCH c.categoryFilter f "
            + "where e.deleteTs is null "
            + "and f.uid in (?1)")
    Page<Entity> findByFilters(List<String> filters, Pageable pageable);
    
[/code]

また、これの戻り値をListにすると、エラーは発生しなくなるため、  
PageクラスのtotalElementsを取得することができないというエラーなのはわかっています。  
似たようなクエリを流しても、エラーにはなりませんでした。

バグでしょうか？


CC BY-SA 3.0
2016-02-28T12:02:19.860
22638
2016-04-08T01:34:13.967
8396
question
sql spring jpa
JPAのQueryでcount(*)に失敗する

[code]

    @Query(value = "select e from Entity e "
            + "LEFT JOIN FETCH e.relation c "
            + "LEFT JOIN FETCH c.categoryFilter f "
            + "where e.deleteTs is null "
            + "and f.uid in (?1)",
           countQuery = "select e from Entity e ...")
    
[/code]

left join fetchしてるのにcountQueryが未指定なのが原因だと思います。


CC BY-SA 3.0
2016-04-08T01:34:13.967
23835
2016-04-08T01:34:13.967
4739
22638
answer