2
respostas

Erro em código

Gostaria de saber porque meu código não funciona. Eu penso que seja algo relacionado à conexão com o mySQL, mas não sei como resolver isso. Segue o código.

Hibernate: drop table if exists Produto
Hibernate: drop table if exists Produto_Categoria
[localhost-startStop-1] ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'criadorDeProdutos': Invocation of init method failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:414)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1754)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBe
2 respostas

Oi Adriana, tudo bem?

Pela mensagem de erro, tem algum erro no comando que está indo para o banco de dados. Posta aqui seu criadorDeProdutos, por favor

Segue o código. Não fiz alterações em relação à classe pertencente à resposta dada no curso.

package br.com.caelum;

import javax.annotation.PostConstruct; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.stereotype.Component; import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.support.TransactionCallbackWithoutResult; import org.springframework.transaction.support.TransactionTemplate;

import br.com.caelum.model.Categoria; import br.com.caelum.model.Loja; import br.com.caelum.model.Produto;

@Component public class CriadorDeProdutos {

@PersistenceContext
private EntityManager em;

@Autowired
private JpaTransactionManager transactionManager;

@PostConstruct
public void init() {
    TransactionTemplate template = new TransactionTemplate(
            transactionManager);
    template.execute(new TransactionCallbackWithoutResult() {
        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {

            Loja casaDoCodigo = new Loja();
            casaDoCodigo.setNome("Casa do Código");

            em.persist(casaDoCodigo);

            Loja musicalAlegre = new Loja();
            musicalAlegre.setNome("Musical Alegre");

            em.persist(musicalAlegre);

            Categoria tecnologia = new Categoria("Tecnologia");
            em.persist(tecnologia);

            Categoria musica = new Categoria("Música");
            em.persist(musica);

            Produto cursoDeViolao = new Produto();
            cursoDeViolao.setNome("Curso de Violão");
            cursoDeViolao.setLoja(musicalAlegre);
            cursoDeViolao.setPreco(49.0);
            cursoDeViolao
                    .setDescricao("Estude com os melhores professores e aprenda no seu ritmo, sem sair de casa.");
            cursoDeViolao.adicionarCategorias(tecnologia, musica);
            cursoDeViolao
                    .setLinkDaFoto("https://pbs.twimg.com/profile_images/378800000825434860/12136ee913ed4f44860914d44650144e.png");

            em.persist(cursoDeViolao);

            Produto livroDeArquitetura = new Produto();
            livroDeArquitetura
                    .setNome("Introduçao a Arquitetura Java e Design de projetos com Java");
            livroDeArquitetura.setLoja(casaDoCodigo);
            livroDeArquitetura.setPreco(30.0);
            livroDeArquitetura.adicionarCategorias(tecnologia);
            livroDeArquitetura
                    .setDescricao("Neste livro, os autores, conhecidos especialistas da "
                            + " área, apresentam muitos tópicos que aparecem com frequência"
                            + " na plataforma Java, incluindo desde modelagem e design das "
                            + "classes, até detalhes importantes das tecnologias mais utilizadas."
                            + "  Sempre com uma visão técnica e prática capaz de elucidar muitas "
                            + "questões enfrentadas tanto pelo profissional iniciante quanto por "
                            + "aquele que está adquirindo mais experiência na plataforma.");

            livroDeArquitetura
                    .setLinkDaFoto("http://www.arquiteturajava.com.br/img/capa-livro.png");

            em.persist(livroDeArquitetura);

            Produto livroDeSpring = new Produto();
            livroDeSpring.setNome("Vire o jogo com Spring Framework");
            livroDeSpring.setLoja(casaDoCodigo);
            livroDeSpring.setPreco(30.0);
            livroDeSpring.adicionarCategorias(tecnologia);
            livroDeSpring
                    .setDescricao("Criado para simplificar o desenvolvimento de aplicações Java, "
                            + "o Spring se tornou um dos frameworks de mais destaque dentro desse grande ambiente.  "
                            + "Aprenda muito mais que o básico do Spring, desde o tradicional Container de Inversão "
                            + "de Controle e Injeção de Dependências, passando pelos robustos módulos de segurança, "
                            + "transações, programação orientada a aspectos e também o fantástico módulo MVC, o SpringMVC.");

            livroDeSpring
                    .setLinkDaFoto("http://cdn.shopify.com/s/files/1/0155/7645/products/spring-framework-featured_large.png?v=1411567960");

            em.persist(livroDeSpring);

            Produto violao = new Produto();
            violao.setNome("Violão");
            violao.setLoja(musicalAlegre);
            violao.setDescricao("Excelente violão");
            violao.setPreco(500.0);
            violao.adicionarCategorias(musica);
            violao.setLinkDaFoto("http://www.marillac.g12.br/imgs/atividade%20complementar/violao.jpg");

            em.persist(violao);

            Produto flauta = new Produto();
            flauta.setNome("Flauta Doce");
            flauta.setLoja(musicalAlegre);
            flauta.setDescricao("Flauta doce");
            flauta.setPreco(300.0);
            flauta.adicionarCategorias(musica);
            flauta.setLinkDaFoto("http://i.mlcdn.com.br/1500x1500/flauta-doce-germanicayamaha-yrs-23g-204013000.jpg");

            em.persist(flauta);

        }
    });
}

}