首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在程序中捕获错误?

如何在程序中捕获错误?
EN

Stack Overflow用户
提问于 2019-11-22 18:59:00
回答 1查看 230关注 0票数 0

我已将表的自动更新设置为“无”

代码语言:javascript
复制
spring.jpa.properties.hibernate.hbm2ddl.auto=none

这样,当我运行Envers时,我必须自己创建审计表。但是,当我将一个实体设置为使用@ audit注释进行审计,并且没有为该实体创建审计表时,我会遇到一个错误,因为Envers随后会尝试填充不存在的审计表。此错误至关重要,因为它会因为审计中断而中断更新/插入/删除实体的过程。

是否有任何方法为Envers进行某种类型的尝试/捕获,以便如果存在此类错误,则不会破坏主进程?

附注:

我还使用测试数据库自动创建审计表,但它在设定的时间或调用时运行。我仍然希望有一些方法来检查错误,并且在某种程度上绕过审计,以防我忘记调用脚本或表的测试数据库更新失败。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 18:13:47

这个错误是至关重要的,因为它会因为审计中断而中断更新/插入/删除实体的过程。

这就是重点所在。

定义使用@Audited映射的实体时,您已经指定要跟踪对该实体的更改,因此,如果由于缺少表或列而无法跟踪此类更改,则事务将被回滚以保持审计表和主实体表之间的一致性状态。

在Hibernate 6中,我们实际上正在考虑引入分类HBM2DDL控件,您可以在其中为主实体表设置none,对Envers使用update,这完全避免了所面临的问题,因为Envers背后的要点是对主表进行阴影。

现在,您可以简单地将hbm2ddl.auto配置属性设置为validate,以便至少在流程的早期报告问题,而不是在缺少表的运行时报告问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59000206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档