update(User)
SDN 4.0.0を使った機能を持ったサービスを書いてみました。関数は、データベースに同じ ID を持つユーザーが存在するかどうかを確認し、存在する場合は、このユーザーを新しいユーザーで上書きします。
をUserRepository
拡張するを持っているGraphRepository<User>
私は、次のコードを書きました:
User updateUser(User user){
if(userRepository.findOne(user.getId())!=null){
user = userRepository.save(user);
return user;
}else{
//Exception handling here
}
}
findOne(id)
が呼び出された瞬間から、ユーザーオブジェクトのすべての属性がデータベース内のユーザーで上書きされるため、更新する各ユーザーがデータベース内の状態のままになるという問題があります。
existsById(Long id)
クエリ"Match (n:User) where ID(n)={0}" で注釈が付けられた関数をリポジトリに追加することにより、問題を既に修正しました。
ただし、取得しようとしたオブジェクトと同じ ID を持つオブジェクトを SDN が上書きする理由については、まだ興味があります。参照が関係していると思いますが、その利点は実際にはわかりません。