5

I have the following jpa repository:

   @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);

Now, i would like to implement a similar update query for a mongoDB repository:

@Query("update( { _id: ObjectId(' $1 ') }, { $set: { messageStatus: $2} })")

But it doesn't work. any references to how a customized mongo repository update looks like?

Thanks

2 Answers 2

10

The MongoDB query language is a query-only language. Thus, there's no such thing as an update query. If you need to executed dedicated updates with a Spring Data repository on top of MongoDB, you need a custom implementation method.

// 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 {
  …
}

This approach is also described in the reference documentation.

Sign up to request clarification or add additional context in comments.

2 Comments

Hey Oliver, link is 404
@Madbreaks this is update for specific release: docs.spring.io/spring-data/mongodb/docs/2.2.5.RELEASE/reference/…
-1

If you just pass the previously auto-created _id of the Object with the updated object values, MongoDB 'Update's rather than 'Create' a new instance.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.