Issue
I'm new to spring boot and trying to make my first api. I've made a lot of apis on python using FastAPI framework, but now i decided to study this technology. But here, I met a problem. So I'm using the jpa for database communication and I don't really understand how to update entity's fields correctly.
I've read a lot of guidelines, and all of them says that updating an entity carried out like this:
public void updateUserInDatabase(long userId, UserUpdateModel newData) {
UserEntity user = userRepo.findById(userId).orElseThrow();
if(newData.getUsername() != null) {
user.setUsername(newData.getUsername());
}
if(newData.getPassword() != null) {
user.setPassword(newData.getPassword());
}
}
But I think it's not useful as newData
can have a lot of fields, so for updating an entity I'll need a lot of conditions.
So, yeah, maybe this question is silly, but I really try to understand XD. If you know the answer, please tell me! I'd really appreciate it. Thank you in advance.
Solution
You could use an entity mapper like MapStruct or ModelMapper
A ModelMapper example:
ModelMapper mapper = new ModelMapper();
// this will tell ModelMapper to ignore null fields when mapping the source (newData) to the destination (user)
mapper.getConfiguration().setSkipNullEnabled(true);
UserEntity user = userRepo.findById(userId).orElseThrow();
// this will tell ModelMapper to map newData into user
mapper.map(newData, user);
Answered By - Matheus Cirillo
Answer Checked By - Marilyn (JavaFixing Volunteer)