web-dev-qa-db-ja.com

Spring DataのfindAll()メソッドのデフォルトのソート順を変更する

私はSpring Data JPAを使用していますが、Spring Data findAll()メソッドで使用されているエンティティのデフォルトのソート順を変更することは可能でしょうか?

16
Marcel Overdijk

次のいずれかの方法でこれを実行できるはずです。

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();
}

または、

カスタムリポジトリ実装を作成することにより:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

4
Alan Hay

これは次のようにして達成できます。

dao.findAll(new Sort(Sort.Direction.DESC, "<colName>"));

同じことを達成する別の方法。以下のメソッド名を使用します。

findByOrderByIdAsc()
26
Mithun

代わりにPagingAndSortingRepositoryを使用してください。これを設定すると、クエリパラメーター?sort =を追加できます。

リポジトリ:

public interface UserRepository extends PagingAndSortingRepository<User, Long> {
  //no custom code needed
}

GETリクエスト:

localhost:8080/users?sort=name,desc
1
Matthias