Модель пользователя:
@Document(collection = "USER")
public class UserModel {
private String id;
private String username;
@Indexed(unique = true)
private String email;
private String password;
private String firstName;
private String lastName;
}
Пользовательский репозиторий:
@Repository
public interface UserRepository extends MongoRepository<UserModel, String> {
Optional<UserModel> findByEmail(String email);
Optional<UserModel> findByUsername(String username);
}
Сохранение пользовательского документа следующим образом:
@Autowired
UserRepository userRepo;
public someMethod() {
UserModel user = new UserModel();
//Set all fields....
userRepo.save(user);
}
Попытка обновления следующим образом:
@Autowired
UserRepository userRepo;
public someMethod() {
UserModel user = new UserModel();
user.setId("A valid Id got from database by last insert")
user.setFirstName("New first name");
// Remaining fields are null now
userRepo.save(user);
}
Здесь нулевые значения будут вставлены MongoRepository.
Есть ли какие-либо настройки, с помощью которых я могу указать MongoRepository избегать нулевых значений при обновлении?
Если мы сделаем это методом MongoTemplate updateFirst()
, нам нужно будет добавить if
условий для всех полей POJO. Какое лучшее решение в этом случае?