Erro ao carregar cliente exportado entre unidades

Identificador: 12012
Autor: Ricardo Bocchi   sexta-feira, Dia 22 de setembro de 2023, às 17:32:05 horas
Revisado Por: Ricardo Bocchi   sexta-feira, Dia 22 de setembro de 2023, às 17:38:55 horas
Visualização: Todos

Pontos: 0   Acessos: 1434


Erro ao acessar detalhes de um cliente exportado. Ao analisar os logs, a seguinte exceção foi reportada.


More than one row with the given identifier was found: 7074, for class: br.com.mobilemind.gym.Cliente. Stacktrace follows:
org.hibernate.HibernateException: More than one row with the given identifier was found: 7074, for class: br.com.mobilemind.gym.Cliente
 at br.com.mobilemind.gym.ClienteController.gatherClienteShowModel(ClienteController.groovy:10394)
 at br.com.mobilemind.gym.ClienteController$_show_closure56.doCall(ClienteController.groovy:2283)
 at br.com.mobilemind.gym.ClienteController.withCliente(ClienteController.groovy:10352)
 at br.com.mobilemind.gym.ClienteController.show(ClienteController.groovy:2236)

Solução

Verificar se o sistemaAdministrativoControle do cliente não está relacionado a mais de um cliente. Nesse caso, o ID do sistemaAdministrativoControle era 7074. Então a seguinte SQL conseguiu identificar o problema:


SELECT * FROM `cliente_sistema_administrativo_controle` WHERE `id` = 7074

Para esse caso, retornou mais que uma relação, e isso não pode. Um registro só pode estar relacionado a um cliente. Então devemos remover a relação dos dos clientes baseado na tenant do sistemaAdministrativoControle.

Isso ocorre em clientes exportados em versões antigas do 4GYM, que por conta de um BUG não tratavam essa situação na exportação.