我无法在 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();
我正在学习 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();