Как редактировать Pojo весной Ява? - PullRequest
0 голосов
/ 06 мая 2019

Я хочу отредактировать пользователя, я должен заменить его другим пользователем?Или я должен просто заменить атрибуты?

У меня есть этот контроллер

@PostMapping("/edit")
    public ResponseEntity<User> editUser(@RequestBody User user) {
        log.info("EDIT");
        return new ResponseEntity<User>(userServiceImpl.editUser(user), HttpStatus.OK);
    }

это мой сервис:

public User editUser(User user) {
        User owner = userRepository.findById(user.getId());
        owner=user;

        userRepository.save(user);

        return owner;
    }

класс User

@Entity
@Table(name = "User")
public class User implements Serializable {

    private static final long serialVersionUID = -3009157732242241606L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "name")
    private String name;

    @Column(name = "password")
    private String password;

    @Column(name = "email")
    private String email;

Мне нужно сделать что-то подобное, я имею в виду сделать запрос вставки к bd?

@Modifying
@Query("update User u set u.firstname = ?1, u.lastname = ?2 where u.id = ?3")
void setUserInfoById(String firstname, String lastname, Integer userId);

Ответы [ 3 ]

1 голос
/ 06 мая 2019

Чтобы было понятно.Пусть это будет просто.

  1. У вас есть userRepository.save (user);Что он будет делать?

    • Если у этого объекта нет идентификатора ~> Сохранить его как новый объект
    • Если у этого пользователя есть идентификатор, он проверит ПЕРЕЗАПИСЬ, если идентификаторis EXIT Так что, если вы хотите редактировать просто НЕКОТОРЫЕ ПОЛЯ, давайте сделаем так:

    домен: порт / пользователь / {userId} / (PUSH) и укажите поле, которое необходимо изменить здесь.~> Получите настоящий объект в БД ~> обновите объект и сделайте с SAVE./ ~> Или вы можете выполнить обновление запроса напрямую, если хотите

1 голос
/ 06 мая 2019

Здесь это гарантирует, что данные не будут потеряны, а новая запись не будет создана.

public User editUser(User user) {
        User owner = userRepository.findById(user.getId());
        if(user.getName != null){
          owner.setName(user.getName);
        }
        if(user.getPassword != null){
          owner.setPassword(user.getPassword);
        }
        if(user.getEmail != null){
          owner.setEmail(user.getEmail);
        }
        return userRepository.save(owner);
    }
1 голос
/ 06 мая 2019

Просто сохраните обновленного пользователя

public User editUser(User user) {
    return userRepository.save(user);
}

Этого будет достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...