Java 当前登录用户返回Null,即使它显示当前用户信息
在我的Spring项目中,我可以注册用户并显示当前用户信息,但是在我的控制台中,当前用户返回null,即使它在数据库中找到并显示用户详细信息 我可以将subject对象添加到数据库中,当我尝试将该subject添加到用户实体中的subject列表时,它将当前用户返回为null。 这是我的“addSubjectController” 在我的添加主题控制器中,错误发生在以下行: User User=userRepository.findByEmailAddress(电子邮件) 因为它说即使用户在userRepostory中,当前用户也不存在,所以它无法找到当前登录的用户 这是我的用户实体Java 当前登录用户返回Null,即使它显示当前用户信息,java,spring,spring-boot,login,thymeleaf,Java,Spring,Spring Boot,Login,Thymeleaf,在我的Spring项目中,我可以注册用户并显示当前用户信息,但是在我的控制台中,当前用户返回null,即使它在数据库中找到并显示用户详细信息 我可以将subject对象添加到数据库中,当我尝试将该subject添加到用户实体中的subject列表时,它将当前用户返回为null。 这是我的“addSubjectController” 在我的添加主题控制器中,错误发生在以下行: User User=userRepository.findByEmailAddress(电子邮件) 因为它说即使用户在us
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "emailAddress"))
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;
//@NotBlank
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
public List<Subject> subject;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(
name = "user_userId", referencedColumnName = "userId"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
public Collection<Role> roles;
public List<Subject> getSubject() {
if (subject==null)
subject = new ArrayList<Subject>();
return subject;
}
private String username;
//@NotBlank
private String password;
//@NotBlank
private String firstName;
//@NotBlank
private String surname;
//@NotBlank
private int age;
//@NotBlank
private double height;
//@NotBlank
private double weight;
//@NotBlank
private String emailAddress;
//@NotBlank
private String gender;
//@NotBlank
private String dob;
Boolean studentStatus;
public User() {
}
}
public User(Long userId, List<Subject> subject, Collection<Role> roles, String username, String password,
String firstName, String surname, int age, double height, double weight, String emailAddress, String gender,
String dob, Boolean studentStatus) {
super();
this.userId = userId;
this.subject = subject;
this.roles = roles;
this.username = username;
this.password = password;
this.firstName = firstName;
this.surname = surname;
this.age = age;
this.height = height;
this.weight = weight;
this.emailAddress = emailAddress;
this.gender = gender;
this.dob = dob;
this.studentStatus = studentStatus;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
return subject;
public void setSubject(List<Subject> subject) {
this.subject = subject;
}
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 String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public Boolean getStudentStatus() {
return studentStatus;
}
public void setStudentStatus(Boolean studentStatus) {
this.studentStatus = studentStatus;
}
@Override
public String toString() {
return "User{" +
"id=" + userId +
", firstName='" + firstName + '\'' +
", surname='" + surname + '\'' +
", email='" + emailAddress + '\'' +
", password='" + "*********" + '\'' +
", roles=" + roles +
'}';
}
public Collection<Role> getRoles() {
return roles;
}
public void setRoles(Collection<Role> roles) {
this.roles = roles;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return false;
}
public void addSubject(Subject Subject){
getSubject().add(Subject);
}
@实体
@EntityListeners(AuditingEntityListener.class)
@表(uniqueConstraints=@UniqueConstraint(columnNames=“emailAddress”))
公共类用户实现UserDetails{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有长用户ID;
//@不空白
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
公开名单主题;
@ManyToMany(fetch=FetchType.EAGER,cascade=CascadeType.ALL)
@可接合(
name=“用户\角色”,
joinColumns=@JoinColumn(
name=“user\u userId”,referencedColumnName=“userId”),
inverseJoinColumns=@JoinColumn(
name=“role\u id”,referencedColumnName=“id”))
公共收集角色;
公共列表getSubject(){
if(subject==null)
subject=newarraylist();
返回主题;
}
私有字符串用户名;
//@不空白
私有字符串密码;
//@不空白
私有字符串名;
//@不空白
私家姓;
//@不空白
私人互联网;
//@不空白
私人双高;
//@不空白
私人双倍重量;
//@不空白
私有字符串电子邮件地址;
//@不空白
私人字符串性别;
//@不空白
私有字符串dob;
布尔学生状态;
公共用户(){
}
}
公共用户(长用户名、列表主题、集合角色、字符串用户名、字符串密码、,
字符串名、字符串姓氏、整数、双高、双重、字符串电子邮件地址、字符串性别、,
字符串dob,布尔值studentStatus){
超级();
this.userId=userId;
this.subject=主语;
this.roles=角色;
this.username=用户名;
this.password=密码;
this.firstName=firstName;
this.姓氏=姓氏;
这个。年龄=年龄;
高度=高度;
重量=重量;
this.emailAddress=电子邮件地址;
这个。性别=性别;
this.dob=dob;
this.studentStatus=studentStatus;
}
公共长getUserId(){
返回用户标识;
}
public void setUserId(长userId){
this.userId=userId;
}
返回主题;
public void setSubject(列表主题){
this.subject=主语;
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
公共字符串getPassword(){
返回密码;
}
public void setPassword(字符串密码){
this.password=密码;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getNames(){
返回姓氏;
}
public void setSurname(字符串姓氏){
this.姓氏=姓氏;
}
公共整数getAge(){
回归年龄;
}
公共无效设置(整数){
这个。年龄=年龄;
}
公众双倍身高(){
返回高度;
}
公共空间设置高度(双倍高度){
高度=高度;
}
公共双getWeight(){
返回重量;
}
公共空隙设定重量(双倍重量){
重量=重量;
}
公共字符串getEmailAddress(){
返回电子邮件地址;
}
public void setEmailAddress(字符串emailAddress){
this.emailAddress=电子邮件地址;
}
公共字符串getGender(){
返回性别;
}
公共无效设置性别(字符串性别){
这个。性别=性别;
}
公共字符串getDob(){
返回dob;
}
公共void setDob(字符串dob){
this.dob=dob;
}
公共布尔getStudentStatus(){
返回学生状态;
}
public void setStudentStatus(布尔studentStatus){
this.studentStatus=studentStatus;
}
@凌驾
公共字符串toString(){
返回“用户{”+
“id=“+userId+
“,firstName=”“+firstName+”\“””+
“,姓氏=”“+姓氏+”\”+
“,email='”+emailAddress+'\''+
,密码=“+”*********“+”\''+
“,roles=“+角色+
'}';
}
公共集合getRoles(){
返回角色;
}
公共void集合角色(集合角色){
this.roles=角色;
}
@凌驾
公共收藏添加上面的@Autowired
private-UserRepository-UserRepository代码>
这将告诉Spring关于存储库的情况。如果您还没有使用@Repository
注释UserRepository
类,那么您还需要使用@Repository
注释此类
或者,您可以创建一个构造函数,而不是使用字段注入进行自动连接。用户名与电子邮件相同吗?@holmis83我不使用用户名变量,因此“loggedInUser.getName()”部分指的是电子邮件地址,而不是用户名。我在private UserRepository UserRepository上方添加了@Autowired;它成功了,非常感谢你!!!
@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "emailAddress"))
public class User implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;
//@NotBlank
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
public List<Subject> subject;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(
name = "user_userId", referencedColumnName = "userId"),
inverseJoinColumns = @JoinColumn(
name = "role_id", referencedColumnName = "id"))
public Collection<Role> roles;
public List<Subject> getSubject() {
if (subject==null)
subject = new ArrayList<Subject>();
return subject;
}
private String username;
//@NotBlank
private String password;
//@NotBlank
private String firstName;
//@NotBlank
private String surname;
//@NotBlank
private int age;
//@NotBlank
private double height;
//@NotBlank
private double weight;
//@NotBlank
private String emailAddress;
//@NotBlank
private String gender;
//@NotBlank
private String dob;
Boolean studentStatus;
public User() {
}
}
public User(Long userId, List<Subject> subject, Collection<Role> roles, String username, String password,
String firstName, String surname, int age, double height, double weight, String emailAddress, String gender,
String dob, Boolean studentStatus) {
super();
this.userId = userId;
this.subject = subject;
this.roles = roles;
this.username = username;
this.password = password;
this.firstName = firstName;
this.surname = surname;
this.age = age;
this.height = height;
this.weight = weight;
this.emailAddress = emailAddress;
this.gender = gender;
this.dob = dob;
this.studentStatus = studentStatus;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
return subject;
public void setSubject(List<Subject> subject) {
this.subject = subject;
}
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 String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getDob() {
return dob;
}
public void setDob(String dob) {
this.dob = dob;
}
public Boolean getStudentStatus() {
return studentStatus;
}
public void setStudentStatus(Boolean studentStatus) {
this.studentStatus = studentStatus;
}
@Override
public String toString() {
return "User{" +
"id=" + userId +
", firstName='" + firstName + '\'' +
", surname='" + surname + '\'' +
", email='" + emailAddress + '\'' +
", password='" + "*********" + '\'' +
", roles=" + roles +
'}';
}
public Collection<Role> getRoles() {
return roles;
}
public void setRoles(Collection<Role> roles) {
this.roles = roles;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return false;
}
public void addSubject(Subject Subject){
getSubject().add(Subject);
}
@Entity
public class Subject implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long subjectId;
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
public List<Exam> exam;
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
public List<Assignment> assignment;
private String subjectName;
private Double subjectGradeGoal;
private Double subjectResults;
exams/assignments is 20%
private Double maxSubRemMarks;
public List<Exam> getExam() {
if (exam==null)
exam = new ArrayList<Exam>();
return exam;
}
public List<Assignment> getAssignment() {
if (assignment==null)
assignment = new ArrayList<Assignment>();
return assignment;
}
public Subject() {
super();
this.subjectId = subjectId;
this.exam = exam;
this.assignment = assignment;
this.subjectName = subjectName;
this.subjectGradeGoal = subjectGradeGoal;
this.subjectResults = subjectResults;
this.maxSubRemMarks = maxSubRemMarks;
}
public Long getSubjectId() {
return subjectId;
}
public void setSubjectId(Long subjectId) {
this.subjectId = subjectId;
}
public void setExam(List<Exam> exam) {
this.exam = exam;
}
public void setAssignment(List<Assignment> assignment) {
this.assignment = assignment;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public Double getSubjectGradeGoal() {
return subjectGradeGoal;
}
public void setSubjectGradeGoal(Double subjectGradeGoal) {
this.subjectGradeGoal = subjectGradeGoal;
}
public Double getSubjectResults() {
return subjectResults;
}
public void setSubjectResults(Double subjectResults) {
this.subjectResults = subjectResults;
}
public Double getMaxSubRemMarks() {
return maxSubRemMarks;
}
public void setMaxSubRemMarks(Double maxSubRemMarks) {
this.maxSubRemMarks = maxSubRemMarks;
}
public void add(UserRepository userR) {
// TODO Auto-generated method stub
}
public void addExam(Exam exam){
getExam().add(exam);
}
public void addAssignment(Assignment assignment){
getAssignment().add(assignment);
}