我无法在 spring 引导中获取实体 ID

I can't get an entity ID in spring boot

我正在学习 Spring-Boot,我正在做一个小项目来练习,但是我遇到了问题。

这是一个简单的身份验证应用程序,您可以注册并登录。我的目标是:如果您登录,您的用户名应该出现,为了其他功能我还需要ID.

所以我有这个代码:

@PostMapping("/main")
public String login(@ModelAttribute Users user, Model model) {
    time = sdf.format(new Date());
    Users correctUser = serv.selectUser(user.getName(), user.getPassword());
    if (correctUser != null) {

        //Users data
        login_name = user.getName();
        actual_user_id = user.getId();
        model.addAttribute("given_name", login_name);
        System.out.println("DEBUG: " + user);

        System.out.println(time + " Successful");
        return "main_screen";
    } else {
        System.out.println(time + " Log in failed");
        return "error_page";
    }
}

我可以在login_name中很好地获取和存储名称,但是对于ID我有一些问题。如您所见,我使用与名称相同的 user.getId(),但无论哪种方式,我都会得到 null 并且无法将 ID 存储在我的 actual_user_id 变量中。

这是我的存储库:

@Repository
public interface UserRepository extends JpaRepository<Users, Integer> {
    Optional<Users> findFirstByName(String name);
    Optional<Users> findUserByNameAndPassword(String name, String password);
}

还有我的服务方式:

public Users authentication(String name, String password) {
    return repo.findUserByNameAndPassword(name, password).orElse(null);
}

编辑:这是我的用户 class

@Entity
@Table(name = "users")
public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String password;
    private String email;

    public Integer getId() {
        return 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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", passowrd='" + password + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

我觉得应该可以,但是找不到问题所在。 谁能帮我? 如我所见,我使用 findUserByNameAndPassword() 获取了名称和密码,但我认为没有别的。

您似乎正试图从 post 请求中传递给您的用户处获取您的 ID:

actual_user_id = user.getId();

尝试从您从数据库中检索到的用户那里获取您的信息:

actual_user_id = correctUser.getId();