gpt4 book ai didi

java - AutoIncrement Id PostgreSQL 和 Spring Boot Data JPA

转载 作者:IT老高 更新时间:2023-10-28 13:47:16 28 4
gpt4 key购买 nike

我在尝试在 PostgreSQL 数据库中创建新记录时遇到问题。我只想向 REST 服务发布一个新用户(int:id、String:email、String:password)但是,我遇到了这个错误:

"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

这些是我的 Java 类:

@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
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;
}
}

存储库

public interface UserRepository extends CrudRepository<User, Integer> {
// TODO
}

SQL

CREATE TABLE users(
id INT PRIMARY KEY NOT NULL,
email TEXT NOT NULL,
password CHAR(20) NOT NULL
);

请有人帮助我,因为我不知道如何解决这个问题。

最佳答案

我找到了解决方案。我需要更改这些脚本:

CREATE TABLE users(
id SERIAL PRIMARY KEY NOT NULL,
email TEXT NOT NULL,
password TEXT NOT NULL
);

那么,实体应该被注释为:

@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private Long id;
private String email;
private String password;

public User() {}

public Long getId() {
return id;
}

public void setId(Long 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;
}
}

关于java - AutoIncrement Id PostgreSQL 和 Spring Boot Data JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41791802/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com