Java 当前登录用户返回Null,即使它显示当前用户信息

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

在我的Spring项目中,我可以注册用户并显示当前用户信息,但是在我的控制台中,当前用户返回null,即使它在数据库中找到并显示用户详细信息

我可以将subject对象添加到数据库中,当我尝试将该subject添加到用户实体中的subject列表时,它将当前用户返回为null。 这是我的“addSubjectController”

在我的添加主题控制器中,错误发生在以下行: User User=userRepository.findByEmailAddress(电子邮件)

因为它说即使用户在userRepostory中,当前用户也不存在,所以它无法找到当前登录的用户

这是我的用户实体

@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);
}