我有以下jpa存储库:
@Query("UPDATE PlayerAccount pa SET pa.password = ?3 WHERE pa.id = ?1 AND pa.password = ?2")
@Modifying
public int updatePasswordWithValidation(Long playerAccountId, String oldPasswordDB, String encodePassword);
现在,我想为mongoDB存储库实现类似的更新查询:
@Query("update( { _id: ObjectId(' $1 ') }, { $set: { messageStatus: $2} })")
但它不起作用。任何关于自定义mongo存储库更新的引用的引用?
由于
答案 0 :(得分:6)
MongoDB查询语言是一种仅查询语言。因此,没有更新查询这样的东西。如果您需要在MongoDB之上使用Spring Data存储库执行专用更新,则需要一个自定义实现方法。
// Interface for custom functionality
interface SomeCustomRepository {
void updateMethod(…);
}
// Custom implementation
class FooRepositoryImpl implements SomeCustomRepository {
public void updateMethod(…) {
mongoTemplate.update(…);
}
}
// Core repository declaration combining CRUD functionality and custom stuff
interface FooRepository extends CrudRepository<Foo, ObjectId>, SomeCustomRepository {
…
}
此方法也在reference documentation中进行了描述。
答案 1 :(得分:0)
如果您只是使用更新的对象值传递先前自动创建的Object的_id,则MongoDB'Update'而不是'Create'一个新实例。