並べ替え機能は疑問ですが、ページネーションも使用できます。
は、我々が持っていると仮定します
@Entity
public class Service {
@Id
private Long id;
private String name;
//...
}
@Entity
public class UserService {
@Id
private Long id;
@ManyToOne
User user;
@ManyToOne
Service service;
@ManyToOne
Rating rating;
//...
}
その後、我々は、突起部を作成します。その後、
public interface ServiceRating {
Long getServiceId();
String getServiceName();
Long getRatingId();
}
とクエリ方法サポートページネーションを作成:このクエリはありませんので
public interface UserServiceRepo extends CrudRepository<UserService, Long> {
@Query("select s.id as serviceId, s.name as serviceName, us.rating.id as ratingId from UserService us join us.service s where us.user.id = ?1")
Page<ServiceRating> getServiceRating(Long userId, Pageable pageable);
}
を(グループ化を含まない場合は、追加のcountQuery
を使用する必要はありません( @Query
))。
テスト:
Page<ServiceRating> pages = userServiceRepo.getServiceRating(1L, new PageRequest(0, 10));
assertThat(pages.getContent()).hasSize(10));
UPDATE
ソートも完璧に取り組んでいます。 ただ、Sortオブジェクトを作成する方向を指定し、(投影からの)名前を提出:
Sort sort = new Sort(Sort.Direction.ASC, "serviceName");
userServiceRepo.getServiceRating(1L, new PageRequest(0, 10, sort));
あなたのモデルを表示... – Cepr0
これは一般的な質問です。なぜモデルが必要ですか? – linc01n
私たちがあなたをお手伝いします。クエリとクエリメソッドは、あなたのモデルに依存しています... – Cepr0