私はSpring Data JPAを使用していますが、Spring Data findAll()
メソッドで使用されているエンティティのデフォルトのソート順を変更することは可能でしょうか?
次のいずれかの方法でこれを実行できるはずです。
spring-data 1.5+では、インターフェースのfindAll()メソッドをオーバーライドし、@ Queryアノテーションを追加して、たとえば次のようなEntityクラスに名前付きクエリを作成します。
エンティティ
@Entity
@NamedQuery(name = "User.findAll", query="select u from User u order by u.address.town")
public class User{
}
リポジトリ
public interface UserRepository extends ... <User, Long> {
@Override
@Query
public Iterable<User> findAll();
}
または、
カスタムリポジトリ実装を作成することにより:
これは次のようにして達成できます。
dao.findAll(new Sort(Sort.Direction.DESC, "<colName>"));
同じことを達成する別の方法。以下のメソッド名を使用します。
findByOrderByIdAsc()
代わりにPagingAndSortingRepositoryを使用してください。これを設定すると、クエリパラメーター?sort =を追加できます。
リポジトリ:
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
//no custom code needed
}
GETリクエスト:
localhost:8080/users?sort=name,desc