【发布时间】:2020-09-25 22:37:45
【问题描述】:
用户模型:
@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);
}
这里的 null 值将由 MongoRepository 插入。
我可以通过什么设置告诉 MongoRepository 在更新时避免空值?
如果我们通过MongoTemplate updateFirst() 方法执行此操作,我们必须为 POJO 的所有字段添加if 条件。在这种情况下,最好的解决方案是什么?
【问题讨论】:
-
这能回答你的问题吗? Spring Data MongoDB - ignore empty objects
标签: mongodb spring-boot spring-data-mongodb spring-mongo mongorepository