Depois de atualizar a dependência Maven para mysql-connector-java
versão 5.1.x para 8.0.x os seguintes erros são recebidos mediante compilação:
[ERROR] /home/dev/testproject/src/main/java/DatabaseOperation.java:20: error: package com.mysql.jdbc.exceptions.jdbc4 does not exist
[ERROR] import com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException;
[ERROR] /home/dev/testproject/src/main/java/DatabaseService.java:15: error: package com.mysql.jdbc.exceptions.jdbc4 does not exist
[ERROR] import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;
Aparentemente, o com.mysql.jdbc.exceptions.jdbc4 foi removido sem qualquer depreciação ou uma nota na documentação de migração. Qual é a alternativa agora?
Na verdade, não houve menção de que nas notas de lançamento ou documentos de migração. Eu encontrei o tópico relevante no MySQL Fóruns: Connector / J 8, pegando violações de chave primária . Aqui está uma resposta do representante MySQL lá:
Você pode pegar java.sql.SQLIntegrityConstraintViolationException. MySQLIntegrityConstraintViolationException foi necessária devido c / J 5,1 código híbrido, ele não faz nada específico apenas estende esse java.sql.SQLIntegrityConstraintViolationException.
Em outras palavras, o pacote foi removido para reutilizar as existentes java.sql
classes de exceção, o que é uma coisa boa, mas ainda devia ter sido documentado. Como resultado da discussão supracitado, o relatório de bug foi criado: Bug # 91439 necessidades guia de atualização para informar sobre removidas / exceções refatorado
Como eu inspecionados ainda mais os erros no meu projeto, eu encontrei estes 3 exceções e seus java.sql
mapeamentos:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
->java.sql.SQLSyntaxErrorException
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
->java.sql.SQLIntegrityConstraintViolationException
com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException
->java.sql.SQLTransactionRollbackException
(E eu acho que qualquer outra exceção específica do MySQL a partir pacote jdbc4 também mapeia para o análogo SQL-exceção do pacote java.sql)