spring-data-rest-webmvc 2.0.0.RELEASE と spring-data-jpa 1.5.0.RELEASE を使用しています。
RoomRepository、RoomRepositoryCustom、および RoomRepositoryImpl クラスがあります。
@PostFilter の作業を行うカスタム ロジックを提供できるように、findBy* メソッドをオーバーライドしようとしていますが、ページ分割された結果を返します。
私はもともとこれを RoomRespository に持っていました:
@PostFilter("hasPermission(filterObject, '" + FIND + "')")
@RestResource(rel = "byName", path = "byName")
public List<Room> findByName(@Param("name") String name);
うまく機能しますが、@PostFilter の制限により、リストを返す必要があり、ページを返すことはできません。
次のように @PostFilter を廃止したいと思います。
@RestResource(rel = "byName", path = "byName")
public Page<Room> findByName(@Param("name") String name, Pageable p);
ただし、認証されたユーザーのプリンシパルで結果をフィルター処理する必要があります。(カスタムメソッドでやりたかったこと)
そのため、RoomRespositoryImpl で実装を提供することで findByName をオーバーライドできると考えましたが、それは正しく機能していないようです。findByName をオーバーライドしようとすると、Spring Data REST はメソッドを取得しなくなり、エンドポイントを登録しませんrooms/search/byName?name="test"
。
また、@Query を使用して、ファインダーのカスタム クエリを定義しようとしました。それは機能しますが、認証されたユーザーのプリンシパルをクエリパラメーターとして使用する必要があるため、私の目的では機能するとは思いません。
要約すると、Spring Data REST を使用して /rooms/search/byName?name="test" エンドポイントを実装する最善の方法は、パラメーターを含む名前を持つ部屋のページを返すだけでなく、独自のカスタム ロジック ベースによってフィルター処理されることです。別のテーブルで現在認証されているユーザーのアクセス許可を調べるには?
/rooms/search/* の下にカスタム リンクを追加する方法はありますか?