【发布时间】:2019-05-30 15:20:18
【问题描述】:
我正在尝试在 spring-boot 中实现 GET 和 POST 方法。调用 GET 方法时没有得到正确的响应。
我的控制器类
@RestController
@RequestMapping("api/public")
public class PublicRestApiController {
@GetMapping("users")
public List<User> users(){
return this.userRepository.findAll();
}
@PostMapping(path="/save")
@ResponseBody public User insertusers( @RequestBody UserRequest requestUser){
User user = new User(requestUser.getUsername(),passwordEncoder.encode(requestUser.getPassword()),requestUser.getRoles(),requestUser.getPermissions());
try {
user = this.userRepository.save(user);
return user;
}
catch(Error e) {
return user;
}
}
}
用户请求类
public class UserRequest {
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getActive() {
return active;
}
public void setActive(int active) {
this.active = active;
}
public String getRoles() {
return roles;
}
public void setRoles(String roles) {
this.roles = roles;
}
public String getPermissions() {
return permissions;
}
public void setPermissions(String permissions) {
this.permissions = permissions;
}
private String username;
private String password;
private int active;
private String roles = "";
private String permissions = "";
}
用户类
@Entity
@Table(name = "USER_DETAILS")
public class User {
@Id
@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String PASSWORD;
@Column
private int ACTIVE;
@Column
private String ROLES = "";
@Column
private String PERMISSIONS = "";
public User(String username, String password, String roles, String permissions){
this.username = username;
this.PASSWORD = password;
this.ROLES = roles;
this.PERMISSIONS = permissions;
this.ACTIVE = 1;
}
public User(){}
public int getId() {
return id;
}
public String getUsername() {
return username;
}
public String getPassword() {
return PASSWORD;
}
public int getActive() {
return ACTIVE;
}
public String getRoles() {
return ROLES;
}
public String getPermissions() {
return PERMISSIONS;
}
public void setId(int id) {
this.id = id;
}
public void setUsername(String username) {
this.username = username;
}
public void setPassword(String password) {
this.PASSWORD = password;
}
public void setActive(int active) {
this.ACTIVE = active;
}
public void setRoles(String roles) {
this.ROLES = roles;
}
public void setPermissions(String permissions) {
this.PERMISSIONS = permissions;
}
}
UserRepository 类
@Repository
public interface UserRepository extends JpaRepository<User, Long>{
}
POST 方法工作正常,但在调用 GET 方法时,id 字段将变为默认值 0。未获取正确的 ID 值。而且在运行服务器时,如果我调用 POST 方法,它正在向数据库中插入数据,但是新插入的数据并没有被 GET 方法获取。只有那些数据被获取,我已经在数据库中插入了这些数据。
【问题讨论】:
-
尝试
private Long id;而不是private int id;。在您的仓库中,您已声明您的 ID 为 Long:public interface UserRepository extends JpaRepository<User, Long>{。但是您的实体正在使用int。不确定那会产生什么影响,但看起来不对。
标签: spring-boot get