3.2.12.3.1. 处理违反唯一约束异常

CUBA 框架中,可以为 exception handler 展示的违反数据库约束的异常消息进行自定义。

自定义的消息需要在 web 模块的主消息包内定义,消息键值与数据库中唯一索引的名称全大写一致。示例:

IDX_SEC_USER_UNIQ_LOGIN = A user with the same login already exists

这样,界面展示的通知如下:

unique constraint message

然后添加

IDX_DEMO_PRODUCT_UNIQ_NAME = A product with this name already exists

则会看到这样的消息:

unique constraint message 2

检测数据库违反约束错误是通过 UniqueConstraintViolationHandler 类实现,根据数据库类型不同使用正则表达式做匹配。如果默认的表达式未能识别您数据库的异常,可以通过 cuba.uniqueConstraintViolationPattern 应用程序属性调整。

当然,也可以完全替换标准的 handler,将您自己的 handler 优先级调高,比如,@Order(HIGHEST_PLATFORM_PRECEDENCE - 10)