列“ encrypted_pa​​ssword”不能为空吗?

时间:2019-08-25 10:54:06

标签: java sql spring-mvc spring-data-jpa

我正在使用Javaspring-data-jpa进行Web服务。我设置了工作正常的不同端点。现在,我在post方法中实现了逻辑,并返回了我无法解决的错误。

我使用postman,当我尝试使用ID,用户名,姓氏和密码发出发布请求时,出现错误500,服务器返回此错误:

  

java.sql.SQLIntegrityConstraintViolationException:列“ encrypted_pa​​ssword”不能为空

package com.nicolacannata.Appws.entity;

import javax.persistence.*;
import java.io.Serializable;

@Entity(name="users")
public class UserEntity implements Serializable{

    private static final long serialVersionUID = 8076405899207283205L;

    @Id
    @GeneratedValue
    private long id;

    @Column(nullable = false)
    private String userId;

    @Column(nullable = false, length = 50)
    private String firstName;

    @Column(nullable = false, length = 50)
    private String lastName;

    @Column(nullable = false, length = 50)
    private String email;

    @Column(nullable = false)
    private String encryptedPassword;

    private String emailVerificationToken;

    @Column(nullable = false)
    private boolean emailVerificationStatus = false;

    public long getId() {
        return id;
    }

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

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

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

    public String getEncryptedPassword() {
        return encryptedPassword;
    }

    public void setEncryptedPassword(String encryptedPassword) {
        this.encryptedPassword = encryptedPassword;
    }

    public String getEmailVerificationToker() {
        return emailVerificationToken;
    }

    public void setEmailVerificationToker(String emailVerificationToker) {
        this.emailVerificationToken = emailVerificationToker;
    }

    public boolean isEmailVerificationStatus() {
        return emailVerificationStatus;
    }

    public void setEmailVerificationStatus(boolean emailVerificationStatus) {
        this.emailVerificationStatus = emailVerificationStatus;
    }
}

2 个答案:

答案 0 :(得分:0)

您声明属性encryptedPassword不能为null。异常表示,当您尝试将其保存到数据库时,该属性为null。您要么忘记设置此属性。或者,您进行了设置(您将其称为setter),但是新值为null。要解决此问题,请在保存到数据库之前将此属性设置为not-null值。

答案 1 :(得分:0)

您为@Column(nullable = false)拥有private String encryptedPassword;,并且仅传递了 id,用户名,姓氏和密码。会破坏条件nullable = false并导致java.sql.SQLIntegrityConstraintViolationException: Column 'encrypted_password' cannot be null

解决方案

设置@Column(nullable = true)

OR

传递encryptedPassword的值