Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Error starting ApplicationContext

Olá pessoal! Não estou conseguindo resolver este erro quando busco a série. Obs: outras séries deu certo não deu erro e gravou no banco de dados e tudo mais.

1 - Buscar séries
2 - Buscar episódios
3 - Listar séries buscadas
4 - Buscar série por título
5 - Buscar séries por ator
6 - Top 5 séries
7 - Buscar séries por categoria
8 - Filtrar séries por número de temporadas e avaliação
9 - Buscar episódios por trecho

0 - Sair

1
Digite o nome da série para a busca:
Lost
Hibernate: insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)
2024-05-03T16:27:39.868-03:00  WARN 1112 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 23514
2024-05-03T16:27:39.868-03:00 ERROR 1112 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check"
  Detalhe: Registro que falhou contém (32, Jorge Garcia, Josh Holloway, Yunjin Kim, 8.3, AVENTURA, https://m.media-amazon.com/images/M/MV5BNzhlY2E5NDUtYjJjYy00ODg3..., Os sobreviventes de um acidente de avião são forçados a traba..., Lost, 6).
2024-05-03T16:27:39.897-03:00  INFO 1112 --- [           main] .s.b.a.l.ConditionEvaluationReportLogger : 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-05-03T16:27:39.956-03:00 ERROR 1112 --- [           main] o.s.boot.SpringApplication               : Application run failed

org.springframework.dao.DataIntegrityViolationException: could not execute statement [ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check"
  Detalhe: Registro que falhou contém (32, Jorge Garcia, Josh Holloway, Yunjin Kim, 8.3, AVENTURA, https://m.media-amazon.com/images/M/MV5BNzhlY2E5NDUtYjJjYy00ODg3..., Os sobreviventes de um acidente de avião são forçados a traba..., Lost, 6).] [insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)]; SQL [insert into series (atores,avaliacao,genero,poster,sinopse,titulo,total_temporadas) values (?,?,?,?,?,?,?)]; constraint [null]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:290) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) ~[spring-orm-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-6.1.2.jar:6.1.2]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.2.jar:6.1.2]
    at 
3 respostas

Oii, Flavio, tudo bem com você?

O erro que aparece ali é o ERRO: a nova linha da relação "series" viola a restrição de verificação "series_genero_check".

Isso sugere que o valor que você está tentando inserir no campo "genero da tabela series não está de acordo com as restrições definidas para esse campo no banco de dados. Por exemplo, se a restrição de verificação series_genero_check especifica que o campo genero deve ser um dos valores pré-definidos como "Ação", "Drama", "Aventura" etc., e você tenta inserir o valor "AVENTURA" (em maiúsculas quando deveria ser em minúsculas - ou vice-versa -), isso causaria o erro.

Para resolver esse problema, você pode verificar algumas coisas:

  • Verificação da Restrição no Banco de Dados: verifique, por favor, no banco de dados quais são os valores permitidos para o campo genero na tabela series. Isso pode ser feito consultando as restrições de verificação (check constraints) definidas para a tabela.

  • Correspondência de Dados: os dados que você está tentando inserir precisam corresponder exatamente aos valores permitidos pela restrição. Isso inclui verificar maiúsculas e minúsculas, espaços extras, entre outros.

  • Atualização do Código: se necessário, seria interessante atualizar o valor que está sendo inserido para garantir que ele esteja em conformidade com as restrições do banco de dados. Por exemplo, se o banco de dados espera "aventura" e você está inserindo "AVENTURA", você precisará ajustar isso no seu código.

Se você está no PostgreSQL, por exemplo, pode usar um código parecido com este:

SELECT conname, pg_get_constraintdef(c.oid)
FROM pg_constraint c
JOIN pg_namespace n ON n.oid = c.connamespace
WHERE n.nspname = 'public' AND conrelid = 'series'::regclass AND contype = 'c';

Se outra dúvida surgir, estamos disponíveis.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Bom dia Flavio, espero que esteja tudo ótimo com você, verifique se na classe Categoria, foi adicionado o gênero Aventura. Tive esse mesmo erro, para resolvê-lo adicionei novos gêneros de séries na classe Categoria e, depois DROPEI as tabelas do banco e recriei-as com esses novos dados. Espero tê-lo ajudado, abraços!

Olá boa tarde! Obrigado pela ajuda Maria Isabel, o que aconteceu foi como o Everaldo disse; eu havia adicionado o gênero Aventura na classe Categoria mas não Dropei as tabelas. Quando fiz isso funcionou perfeitamente. Obrigado Everaldo!