1

post(save()) で生成された ObjectId を返すように変更したい単純な MongoRepository があります。

public interface EmployeeRepository extends MongoRepository<Employee, String>
{   
    public void delete(Employee employee);
    public Employee save(Employee employee);
    public Employee findOne(String id);
    public List<Employee> findAll();
    public Employee findByName(String principal);
}

クライアント側でIDを生成して投稿に渡す方法を検討しましたが、Springにこれを処理してもらいたいです。

次のように、コントローラーでインターセプトし、ResponseBody でオブジェクトを返すことを試みました。

@RequestMapping(value=URI_EMPLOYEES, method=RequestMethod.POST)
public @ResponseBody Employee addEmployee(@RequestBody Employee employee) {
    return repo.save(employee);
}

これの問題は、HATEOAS 関連のすべてのロジックの Spring ハンドルをやり直す必要があることです。これは大きな痛みです。(私が何かを見逃していない限り。)

すべてのメソッドを置き換えることなくこれを行う最も効果的な方法は何ですか?

4

2 に答える 2

-1

インターフェースを見てください:

public Employee save(Employee employee)

単に実行するだけで、保存されたエンティティを取得できます

Employee saved = repository.save(employee);
return saved.getId();

そうは言っても、IDを生成して、経由で設定できますsetId()。ただし、ID が保存されると、変更できなくなります。Id を変更してそのエンティティを保存すると、MongoDB に新しいドキュメントが保存されます。

于 2014-10-17T07:11:10.310 に答える