I am having problems trying to create a new record in my PostgreSQL database. I just want to use POST for the REST service of the new user (int: id, String: email, String: password), but I have this error:
"exception": "org.springframework.dao.DataIntegrityViolationException", "message": "could not execute statement; SQL [n/a]; constraint [id]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
These are my Java classes:
Domain
@Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String email; private String password; public User() {} public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
controller
@RestController @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @RequestMapping(method = RequestMethod.GET) public List<User> findAll() { return userService.findAll(); } @RequestMapping(method = RequestMethod.POST) public User addUser(@RequestBody User user) { userService.addUser(user); return user; } }
Service
@Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findAll() { return (List<User>) userRepository.findAll(); } public User addUser(User user) { userRepository.save(user); return user; } }
Repository
public interface UserRepository extends CrudRepository<User, Integer> {
SQL
CREATE TABLE users( id INT PRIMARY KEY NOT NULL, email TEXT NOT NULL, password CHAR(20) NOT NULL );
Please help me because I do not know how to solve this problem.
java spring postgresql jpa
lbpeppers
source share