用户模型:
@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()
方法执行此操作,则必须为POJO的所有字段添加if
条件。在这种情况下最好的解决方案是什么?