【问题标题】:java.lang.NullPointerException: Cannot invoke ".repository.updatePassword.updtPassword because clientJsonWebTokenValidation.upPassword is nulljava.lang.NullPointerException:无法调用“.repository.updatePassword.updtPassword,因为 clientJsonWebTokenValidation.upPassword 为空
【发布时间】:2022-01-10 11:32:15
【问题描述】:

我写的服务类如下-

@Service
public class clientJsonWebTokenValidation {
    
    @Autowired
    private static updatePassword upPassword;

稍后在程序中,我通过在该程序中提供必要的参数来调用 JpaRepository 方法,如下所示,出现异常。

    upPassword.updtPassword(strClientUsername,strNewPasswordToReset);   

而JpaRepository的实现如下

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.erecruitment.app.model.user;
@Repository
public interface updatePassword extends JpaRepository<user, Long>{
    
    public String nativeQuery="UPDATE user SET password='?' WHERE username='?'";
    
    @Query(value=nativeQuery,nativeQuery=true)
    boolean updtPassword(String strUsernameOfWhichPasswordToUpdate,String 
    strPasswordToBeUpdated);    
}

还有用户pojo如下-

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonProperty;
@Entity
@Table(name="user")
public class user {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    
    @JsonProperty("username")
    @Column(name="username")
     private String username;
    
    @JsonProperty("password")
    @Column(name="password")
     private String password;
    
    public user() {
        super();
        // TODO Auto-generated constructor stub
    }
    

    public user(String username, String password) {
        super();
    
        this.username = username;
        this.password = password;
    }


    public long getId() {
        return id;
    }


    public void setId(long id) {
        this.id = id;
    }


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


}

例外是 java.lang.NullPointerException:无法调用“com.er.app.repository.updatePassword.updtPassword(String, String)”,因为“com.er.app.service.clientJsonWebTokenValidation.upPassword”为空

如何解决这个异常?任何替代解决方案也可以。提前致谢。

【问题讨论】:

    标签: spring spring-boot hibernate spring-mvc spring-data-jpa


    【解决方案1】:

    依赖注入不适用于静态字段。

    @Autowired
    private static updatePassword upPassword;
    

    去掉静态关键字:

    @Autowired
    private updatePassword upPassword;
    

    一些注意事项:

    • @Repository 在扩展 JpaRepository 的接口上不是必需的。
    • 在 Java 中,我们编写类/接口以大写字母开头

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 2022-12-10
      • 2021-10-08
      • 2021-12-08
      • 2021-06-09
      • 2023-02-04
      • 2022-12-05
      • 2021-03-24
      • 1970-01-01
      相关资源
      最近更新 更多