无法获得正确的GET响应

时间:2019-05-29 09:52:09

标签: spring-boot get

我正在尝试在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;
    }
}

}

UserRequest类

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方法不会获取新插入的数据。只有那些数据已经被获取,而我已经将它们插入数据库中。 >

This is the data in database

This is the response which I am getting form GET method

2 个答案:

答案 0 :(得分:1)

您的USER类具有类型为.catch的主键,并且在您的存储库中,您已经扩展了 USER类的long应该是Integer,如下所示

存储库:

.catch(error => reject(error))

更新:

int

存储库:

 @Repository
 public interface UserRepository extends JpaRepository<User, Integer>{

 }

@Autowired UserRepository userRepository; @GetMapping("users") public List<User> users(){ return userRepository.getAllUsers(); } 导入 @Repository public interface UserRepository extends JpaRepository<User, Integer>{ @Query(value="select * from USER_DETAILS",nativeQuery=true) List<User> getAllUsers(); }


UPDATE2: 项目结构的Idel方法是根据类的行为使用不同的包。

  • 控制器
  • 服务
  • 存储库
  • 模型或实体
  • DTO,DAO
  • 根据要求的安全性,配置等

@Query

答案 1 :(得分:0)

您没有正确返回答复。试试这个。

    @GetMapping("users")
public ResponseEntity<List<Article>> users(){
        return new ResponseEntity<List<Article>>(this.userRepository.findAll(), HttpStatus.OK);
}