Hibernate无法在删除时将null插入审计列

时间:2012-04-11 15:21:24

标签: hibernate hibernate-annotations audit-tables

我最近在我的user和user_audit表中添加了一个新列“PASSWORD_RESET_REQUIRED”。

不是在我尝试删除用户时 我收到一个错误说:

无法插入NULL(“USER_AUD”。“PASSWORD_RESET_REQUIRED”)

@Entity
@Table(name = "sec_user", schema = "RZUL_DATA")
//Override the default Hibernate delete and set the termination date rather than     deleting the record from the db.
@SQLDelete(sql = "UPDATE RZUL_DATA.sec_user SET trmn_dt = sysdate  WHERE user_id = ?")

@Audited
public class User {

@NotEmpty
@Column(name = "password_reset_required", updatable = true, insertable = true)
private String isPasswordResetRequired;

 ... other properties
}

我的UserDao删除方法:

@Override
public boolean deleteUser(final User user) {
    sessionFactory.getCurrentSession().delete(user);
   NOTE: Till this point I can see the user.isPasswordResetRequired an a non null.
    return true;
}

我可以错过哪一部分?

2 个答案:

答案 0 :(得分:1)

当您尝试删除项时,Hibernate尝试将Child表上的外键列设置为null,因为它不能为您使用的SQL技术提供错误。尝试

@Cascade(value=CascadeType.ALL)

请参阅cannot insert null in one to many relatioship hibernate annotation

答案 1 :(得分:1)

确保您的*_HISTORY表没有NOT NULL数据列。