Jpa Hibernate环境无法删除实体

Jpa Hibernate环境无法删除实体,jpa,hibernate-envers,Jpa,Hibernate Envers,我现在真的有个奇怪的问题 我只想删除一个实体 我还使用Hibernate envers进行审计。现在我想删除这个实体 现在我得到以下信息 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 列“succeed”不能为空 因此,当我从表中删除@Audit时,我突然能够删除实体 现在,我转到我的entity_aud表,取消选择NOT NULL作为属性success。然后我又把@Audit放在我的桌子上

我现在真的有个奇怪的问题

我只想删除一个实体

我还使用Hibernate envers进行审计。现在我想删除这个实体

现在我得到以下信息

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 列“succeed”不能为空

因此,当我从表中删除
@Audit
时,我突然能够删除实体

现在,我转到我的entity_aud表,取消选择NOT NULL作为属性success。然后我又把
@Audit
放在我的桌子上面

现在它成功了。那么,如果我只想删除一个实体,为什么在使用Hibernate Envers时会出现一个NOTNULL错误呢


原因何在?

删除实体时,Envers还将为该操作生成审核条目。默认情况下,生成删除审核记录时不会捕获实体数据,因此Envers会尝试在审核表中插入一行,该行包含主键、修订号和修订类型。所有其他列将插入空值

由于审核表的SUCCESS列被指定为
NOT NULL
,因此删除操作会引发异常

除了审核表中的主键、修订和修订类型列之外,所有其他列都应该在不使用
NOT NULL
规范的情况下创建,这意味着它们可以为NULL。如果您可以复制不符合此要求的Envers生成表,请将实体模型附加到问题,将其报告为错误


当设置为
true
时,配置设置为
org.hibernate.envers.store\u data\u at\u delete
将告诉envers不仅要捕获实体的主键、修订和修订类型,还要捕获所有审核列。这在默认情况下是不启用的,因为一般来说,以前的修订版保持相同的状态,因此实际上不需要复制它;但是,有些用户更愿意拥有它。

删除实体后,Envers还将为该操作生成审核条目。默认情况下,生成删除审核记录时不会捕获实体数据,因此Envers会尝试在审核表中插入一行,该行包含主键、修订号和修订类型。所有其他列将插入空值

由于审核表的SUCCESS列被指定为
NOT NULL
,因此删除操作会引发异常

除了审核表中的主键、修订和修订类型列之外,所有其他列都应该在不使用
NOT NULL
规范的情况下创建,这意味着它们可以为NULL。如果您可以复制不符合此要求的Envers生成表,请将实体模型附加到问题,将其报告为错误

当设置为
true
时,配置设置为
org.hibernate.envers.store\u data\u at\u delete
将告诉envers不仅要捕获实体的主键、修订和修订类型,还要捕获所有审核列。这在默认情况下是不启用的,因为一般来说,以前的修订版保持相同的状态,因此实际上不需要复制它;但是,有些用户更喜欢使用它。

您写道“出于这个原因,除了审核表中的主键、修订和修订类型列之外,所有其他列都应该使用NOTNULL规范创建。”您真的是指“使用NOTNULL规范”吗?我认为它应该是“没有NOTNULL规范”或者只是“可以为NULL”。->为此提交了一个编辑请求。您写道:“出于这个原因,除了审核表中的主键、修订和修订类型列之外,所有其他列都应该使用NOT NULL规范创建。”您真的是指“使用NOT NULL规范”吗?我认为它应该是“没有NOTNULL规范”或者只是“可以为NULL”。->已为此提交编辑请求。