【问题标题】:Uncatchable ConstraintViolationException (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException) [closed]无法捕获的 ConstraintViolationException (com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException) [关闭]
【发布时间】:2018-03-10 15:57:09
【问题描述】:

喜欢主题。 我无法处理那个异常。

您可以在此处查看代码: https://github.com/ApproxTeam/AntColosseumIIServer/blob/master/src/main/java/com/approxteam/antcolosseumserver/gamelogic/interfaces/beans/WebSocketRegisterer.java

我想要实现的只是捕获异常而不是破坏调用该 bean 的所有方法。

所有堆栈跟踪:http://wklejto.pl/txt299134

我试图捕捉 Throwable、Exception、PersistenceException、HibernateException、ConstaintVolablablaException,但都不起作用。

怎么了?

我使用 Hibernate 5+ 和 MySQL 作为数据库。

【问题讨论】:

  • 不起作用是什么意思?
  • Catch 子句不起作用,永远无法到达它们并且方法只是失败
  • 请将代码和异常堆栈跟踪放在您的问题中。问题应该是独立的,不依赖外部链接来获取重要信息。

标签: java mysql hibernate jdbc


【解决方案1】:

从堆栈中清楚

 Duplicate entry 'E-mail' for key 'UK_jxn5vjjm6ho216fwddjg10uce'

Email 列存在唯一键约束。

因此,要么从表中删除约束以允许重复的 Email,要么在保存时更改 Email 值。

【讨论】:

  • 这不是我想要达到的。如果有重复,我希望拥有独特的电子邮件和捕获异常的能力
【解决方案2】:

请检查您的 MySQL 驱动程序版本,数据库中存在一些导致捕获异常的问题,请参阅https://bugs.mysql.com/bug.php?id=68831。

【讨论】:

  • 来自 phpmyadmin:MariaDB 10.1.23-MariaDB-9+deb9u1 - Raspbian 9.0
  • 我会尝试将 mysqlconnector 更改为 mariadbconnector - 也许它会起作用?感谢提示
  • 不,它不工作
【解决方案3】:

我有答案:

我加了一个

    entityManager.flush();

保存方法,它可以工作

public void save(Object o) throws Exception {
    entityManager.persist(o);
    entityManager.flush();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2015-10-08
    • 2013-12-02
    • 2015-12-22
    相关资源
    最近更新 更多