【问题标题】:java.sql.SQLException: Field 'passwordConfirmation' doesn't have a default valuejava.sql.SQLException:字段 'passwordConfirmation' 没有默认值
【发布时间】:2011-06-30 12:04:57
【问题描述】:

一段时间以来,我一直在为这个错误摸不着头脑,但无法解决。我一直在使用 Hibernate 3 来持久化 User 实体。但是当我尝试这样做时,我得到 java.sql.SQLException: Field 'passwordConfirmation' doesn't have a default value 错误。

以下是我的 User 实体: 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;
    }

}

有人可以帮我理解为什么会出现这个错误吗?

【问题讨论】:

  • Oracle 告诉 您没有为 passwordConfirmation 字段提供值。您如何/在哪里填充 User 对象?
  • @Nivas:我使用 spring mvc 3 代表表单,然后填写表单,但是当我提交表单时,出现此错误。
  • 我不知道 Spring MVC。但问题是当数据被持久化到数据库时,passwordConfirmation 字段没有被填充。你能试着环顾一下应该更新但不是...的地方
  • @Nivas:我的数据库中没有passwordConfirmation 的任何列,当我提交表单时,我看到passwordConfirmation 的值填充在用于验证相等性的模型中passwordpasswordConfirmation 字段。您的意思是更新passwordConfirmation 字段吗?

标签: mysql sql hibernate


【解决方案1】:

您的类中的passwordConfirmation 属性标记为@Transient,尽管错误表明该字段的列存在于数据库架构中。

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

【讨论】:

  • 是的,我使用 hibernate 来创建架构,但即使在删除并重新创建架构之后,它也会给我相同的结果。
  • @skip: 你确定@Transientjavax.persistence.Transient吗?
  • 即使我怀疑它片刻,但它的 javax.persistence.Transient 只是。
【解决方案2】:

我错误地使用了与使用 Hibernate 生成的架构不同的架构。两种模式在 User 实体中都有 passwordConfirmation 字段,所以很困惑。

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

【讨论】:

  • 那么请将 axtavt 的答案标记为正确,以便阅读他答案的其他人立即知道它解决了您的问题。谢谢
猜你喜欢
  • 2015-07-07
  • 2017-11-15
  • 2014-12-07
  • 2015-07-19
  • 2019-02-09
  • 2020-09-30
  • 2023-01-03
  • 2013-11-11
  • 1970-01-01
相关资源
最近更新 更多