Todos os artigos
Backend 19 Jun 2026 20 min de leitura

Erro com UUID + Spring Boot + JPA + Hibernate + import.sql

Entenda por que erros com UUID, JPA e import.sql acontecem no Spring Boot e como resolver de forma definitiva.

Erro com UUID + Spring Boot + JPA + Hibernate + import.sql

🚨 Erro com UUID + Spring Boot + JPA + Hibernate + import.sql

… por que ele acontece (e como resolver)

Não poderia deixar de compartilhar o erro que me fez perder algumas boas horas.

Se você já trabalhou com UUID, JPA/Hibernate e um arquivo import.sql no Spring Boot, provavelmente já encontrou este problema enigmático:

“EntityNotFoundException: Unable to find entity with UUID…” ou erros de FK que não fazem sentido.

Acredite... isso não é magia! Esse comportamento é totalmente esperado do Hibernate.

🔍 Por que isso acontece?

Tudo nasce da ordem de inicialização do Hibernate:

▪ O Hibernate só começa a gerar UUIDs automáticos depois que o contexto JPA está ativo.

▪ Antes disso, @GeneratedValue, UUIDGenerator ou qualquer geração automática ainda não funciona.

▪ E o import.sql roda antes de tudo isso.

Ou seja:

👉 O Hibernate ainda não consegue gerar UUIDs.

👉 Não consegue resolver foreign keys automaticamente.

👉 E você é obrigado a definir todos os UUIDs manualmente no import.sql.

E aí começam os problemas:

▪ UUIDs muito parecidos são convertidos pelo banco (principalmente MySQL)

▪ CHAR(36) pode gerar espaços ou inconsistências

▪ Foreign keys quebram porque o ID ainda não existe

▪ Entidades parecem 'sumir' por interpretação incorreta do UUID

É o tipo de bug que consome horas até finalmente entender o que está acontecendo.

🧪 O que eu tentei (e não funcionou)

1. Inserir UUIDs manualmente no import.sql

Funcionou parcialmente, mas ficou difícil de manter.

Com várias entidades relacionadas, o Hibernate se perdia e o banco fazia conversões inesperadas.

2. Migrar para schema.sql + data.sql

A ideia era que o Spring resolvesse a ordem de execução.

Mas os problemas com UUID continuaram exatamente iguais.

3. A solução final: ApplicationRunner + SeedData

Depois de muitos testes, a abordagem mais estável foi:

▪ Criar uma classe SeedData

▪ Usar @Component

▪ Carregar dados via ApplicationRunner

Com isso:

▪ O Spring já está totalmente inicializado

▪ O Hibernate já consegue gerar UUIDs corretamente

▪ Todas as relações e FKs funcionam como esperado

▪ Zero inconsistências de conversão

O código ficou muito mais limpo, previsível e fácil de manter.

🎯 Conclusão

O comportamento não é bug — é ordem de execução do Hibernate:

▪ UUIDs automáticos não existem antes da JPA inicializar

▪ import.sql roda antes disso

▪ Resultado: necessidade de UUID manual (e dor de cabeça)

A solução mais estável foi:

👉 Usar ApplicationRunner com Hibernate já inicializado

Sem gambiarra. Sem UUID quebrado. Sem FK fantasma.

Gostou do conteúdo?

Explore mais artigos ou volte para o portfólio.

Voltar para a página inicial

Leia também