2011-06-30 187 views
1

我一直在抓我的头在这个错误的某个时候,但不能工作了。我一直在使用Hibernate 3来坚持用户实体。但我得到值java.sql.SQLException:字段“passwordConfirmation”没有默认值错误,当我尝试这样做。值java.sql.SQLException:字段“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

甲骨文告诉_you不提供针对'passwordConfirmation' field_的值。你如何/在哪里填充'User'对象? – Nivas

+0

@Nivas:我代表使用spring mvc 3的表单,然后填写表单,但是当我提交表单时,出现此错误。 – skip

+0

我不知道Spring MVC。但问题是当数据持久化到数据库时,passwordConfirmation字段未填充。你可以尝试环视应该更新的地方,但不是... – Nivas

回答

2

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

如果被Hibenrate自动生成数据库模式,或许它一直您添加了注释@Transient之前完成。如果是这样,你需要重新生成你的模式。

+0

是的,我使用hibernate来创建模式,但即使在删除并重新创建模式后,它也给了我相同的结果。 – skip

+0

@skip:你确定'@Transient'是一个'javax.persistence.Transient'吗? – axtavt

+0

即使我怀疑它一会儿,但是它的'javax.persistence.Transient'只是。 – skip

0

我被错误地使用不同的模式比我被使用Hibernate生成。这两个模式在用户实体中都有passwordConfirmation字段,因此感到困惑。

我找到了现在的工作。谢谢:)

+0

然后请将axtavt的答案标记为正确,以便其他阅读他答案的人立即知道它解决了您的问题。谢谢 – jule64

相关问题