我一直在讨论这个错误已经有一段时间但是无法解决这个问题。我一直在使用Hibernate 3来坚持用户实体。但是当我尝试这样做时,我得到 java.sql.SQLException:字段'password'passwordConfirmation'没有默认值错误。
以下是我的用户实体: 的 User.java
@Entity
public class User implements Serializable {
private Long id;
private String email;
private String password;
private String passwordConfirmation;
private String captcha;
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@NotEmpty
@Email
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@NotEmpty
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@NotEmpty
@Transient
public String getPasswordConfirmation() {
return passwordConfirmation;
}
public void setPasswordConfirmation(String passwordConfirmation) {
this.passwordConfirmation = passwordConfirmation;
}
}
有人可以帮我理解为什么我会收到此错误?
答案 0 :(得分:2)
passwordConfirmation
属性标记为@Transient
,尽管错误表示该字段的列存在于数据库模式中。
如果您的数据库架构是由Hibenrate自动生成的,那么在添加@Transient
注释之前可能已经完成了。如果是这样,您需要重新生成架构。
答案 1 :(得分:0)
我错误地使用了与使用Hibernate生成的模式不同的模式。该模式在User实体中都有passwordConfirmation
字段,因此感到困惑。
我现在已经开始工作了。谢谢:))