我在服务层使用spring transactional annotation。 每当抛出唯一约束异常时,实际异常仅在事务提交期间发生,而不是在我们执行entity.save时发生。
因为这个我无法捕获异常并抛出我的自定义异常以获得唯一约束(我不想使用spring异常转换器功能,因为我需要在异常中设置其他数据)
如果有人遇到过这个问题,请告诉我
由于
答案 0 :(得分:0)
这对我来说似乎是正常的行为。 只有在针对数据库运行事务时才能检测到唯一约束。当你执行enity.save()时,你正在使用的ORM(休眠?)只能检测到唯一约束,如果它在内存中有另一个具有相同唯一约束的对象。
以下帖子Best practise propagating Unique Violation Exceptions to UI似乎与您的问题非常相关。
希望这有帮助