2016-12-06 5 views
3

私はこのようになりますモデルを持っていますモデルだけでなく、ランダムなUUIDも含みます。データベースでPKを主キーとして使用したいが、UUIDを公開IDとして使用したい。あなたは、私がIDとして文字列を使用するようにリポジトリを設定している見ることができるよう春データRESTおよびカスタムエンティティ・ルックアップ(間違ったタイプのIDを提供し)

@RepositoryRestResource(collectionResourceRel = "my-model", path = "my-model") 
public interface MyModelRepository extends CrudRepository<MyModel, String> { 

    @RestResource(exported = false) 
    MyModel findByUuid(@Param("uuid") String id); 
} 

:(URLになどに使用されるように)

私のリポジトリには、このようになります。

は、最後に私はこのような設定ファイルに実体参照を設定します。

@Component 
public class RepositoryEntityLookupConfig extends RepositoryRestConfigurerAdapter { 

    @Override 
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 

     config.withEntityLookup().forRepository(MyModelRepository.class, MyModel::getUuid, MyModelRepository::findByUuid); 

    } 
} 

を。これは、GETやPOSTリクエストのために完璧にうまく動作しますが、私はエラーがPUTに戻り、DELETEメソッドを取得するいくつかの理由。

o.s.d.r.w.RepositoryRestExceptionHandler : Provided id of the wrong type for class MyModel. Expected: class java.lang.Integer, got class java.lang.String 

誰でもこれを引き起こしている可能性がありますか?私はなぜそれが整数を期待しているのか分からない。

私はフレームワークに全く新しいので、私は何か愚かなことをしているかもしれません。 ありがとうございました。

答えて

6

ドメインオブジェクトの識別子は明らかにタイプintです。つまり、リポジトリはextends CrudRepository<MyModel, Integer>と宣言する必要があります。

+0

迅速な対応をありがとうございます。 URLでIDを使用できるようにStringで宣言する必要があるという印象を受けました。しかし、私はちょうど整数でそれをテストし、私は明らかに間違っていた。 – arcticfeather

関連する問題