我正在使用Java
和spring-data-jpa
进行Web服务。我设置了工作正常的不同端点。现在,我在post方法中实现了逻辑,并返回了我无法解决的错误。
我使用postman
,当我尝试使用ID,用户名,姓氏和密码发出发布请求时,出现错误500,服务器返回此错误:
java.sql.SQLIntegrityConstraintViolationException:列“ encrypted_password”不能为空
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;
}
}
答案 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
的值