java.sql.SQLException:字段'passwordConfirmation'没有默认值

时间:2011-06-30 12:04:57

标签: mysql sql hibernate

我一直在讨论这个错误已经有一段时间但是无法解决这个问题。我一直在使用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;
    }

}

有人可以帮我理解为什么我会收到此错误?

2 个答案:

答案 0 :(得分:2)

类中的

passwordConfirmation属性标记为@Transient,尽管错误表示该字段的列存在于数据库模式中。

如果您的数据库架构是由Hibenrate自动生成的,那么在添加@Transient注释之前可能已经完成了。如果是这样,您需要重新生成架构。

答案 1 :(得分:0)

我错误地使用了与使用Hibernate生成的模式不同的模式。该模式在User实体中都有passwordConfirmation字段,因此感到困惑。

我现在已经开始工作了。谢谢:))