Persista RoleRightType por stable getId() em vez de ordinal

Fixkamo-shared-library
Navios
20 de abril de 2026 às 20:59 UTC
Autor
Kamo
Enviar
ea4a85b

Hibernate @EnumType.ORDINAL) escreve/leia o índice de declaração de o enum. Quando é removido um valor de Tipo de Rótulo (por exemplo, MANAGEM USERS, id=19), cada entrada posterior ordinal muda para baixo por um enquanto getId() permanece posto - criando uma divergência silenciosa. Nesta base de código o upsert-SQL bruto * ************* sempre escreveu getId(), então depois MANAGEM USERS foi removido + novos direitos adicionados o DB agora detém valores do tipo direito (por exemplo, 136) que excedem o RoleRightType.values().length, fazendo com que o Hibernate lançar ArrayIndexOutOfBoundsExcepção na inicialização de leitura e falha. Apresentar o Conversor Tipo Direito **************************** Inteiro> que idas e voltas via getld(). Aplicar em todas as cinco tabelas direitas com mapa ORDINAL: - OrgRoleRight - Direito dos membros - JobTitle Direito - Departamento Direito - Direitos dos MembrosAplicados Identificações desconhecidas convertem-se em nulas. pode limpá-los na próxima bota em vez de bater. Os dados da coluna já corresponde getId() (isso é o que insertIfAbsent escreve), então sem migração é necessário — o conversor alinha Hibernate com o que é realmente armazenado.

Todas as alterações

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços