После первого запуска API первые 3 пользовательских запроса на создание сообщений не выполняются (снимок экрана внизу сообщения) с приведенной ниже ошибкой (уникальное ограничение ограничений).
Последующие запросы работают, когда первый созданный пользователь имеет идентификатор 4, затем 5 и т. Д. *
Как я могу заставить создание пользователя работать с первой (3) попытки?
Я подозреваю, что это связано с предварительным заполнением моих пользователей, что я делаю с помощью приведенного ниже сценария.Возможно, автоматическая генерация идентификатора сначала пытается выполнить 1,2,3 - которые уже используются?
INSERT INTO user
VALUES (1, 'user1', 'pass1', 'ADMIN');
INSERT INTO user
VALUES (2, 'user2', 'pass2', 'USER');
INSERT INTO user
VALUES (3, 'user3', 'pass3', 'ADMIN')
не удалось выполнить оператор;SQL [н / п];ограничение [\ "ПЕРВИЧНЫЙ КЛЮЧ НА PUBLIC.USER (ID) \";Оператор SQL: \ ninsert в значения пользователя (имя, пароль, роль, идентификатор) (?,?,?,?) [23505-196]];вложенным исключением является org.hibernate.exception.ConstraintViolationException: не удалось выполнить инструкцию ",
@RestController
public class UserResource {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public List<User> retrievaAllUsers() {
return userRepository.findAll();
}
@DeleteMapping("/users/{id}")
public void deleteUser(@PathVariable Long id) {
userRepository.deleteById(id);
}
@PostMapping("/users")
public ResponseEntity<Object> createUser(@RequestBody User user) {
User savedUser = userRepository.save(user);
URI location = ServletUriComponentsBuilder.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(savedUser.getId())
.toUri();
return ResponseEntity.created(location).build();
}
}
-
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue
private Long id;
private String name;
private String password;
@Enumerated(EnumType.STRING)
private Role role;
public User() {
super();
}
public User(Long id, String name, String password, Role role) {
this.id = id;
this.name = name;
this.password = password;
this.role = role;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}