Flo*_*o19 3 jpa hibernate-envers
我现在真的有一个奇怪的问题。
我只想删除一个实体。
我也在使用 Hibernate envers 进行审计。所以现在我想删除这个实体。
现在我收到以下消息。
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“成功”不能为空
因此,当我@Audit突然从表中删除时,我能够删除该实体。
现在我去了我的 entity_aud 表并取消选择 NOT NULL 属性成功。然后我也再次放在@Audit我的桌子上方。
现在它起作用了。那么为什么如果我只想删除一个实体,我在使用 Hibernate Envers 时会收到 NOT NULL 错误。
这是什么原因。
当一个实体被移除时,Envers 还将为该操作生成一个审计条目。默认情况下,生成删除审核记录时不会捕获实体数据,因此本质上 Envers 尝试将一行插入到包含Primary Key、Revision Number和Revision Type的审核表中。所有其他列都将插入空值。
由于您的审计表将成功列指定为NOT NULL,因此删除会引发异常。
除了审计表中的主键、修订和修订类型列之外,因此所有其他列都应该在没有NOT NULL规范的情况下创建,这意味着它们可以为 NULL。如果您可以重现 Envers 生成不符合此要求的表,请通过将实体模型附加到问题将其报告为错误。
一个配置设置,org.hibernate.envers.store_data_at_delete当设置true为时将告诉 Envers 不仅要捕获实体的主键、修订和修订类型,还要捕获所有审计的列。默认情况下不启用此功能,因为一般而言,先前的修订版保持相同的状态,因此确实没有必要复制它;但是,有些用户更喜欢拥有它。
| 归档时间: |
|
| 查看次数: |
1827 次 |
| 最近记录: |