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

Erro ao inicializar o Tomcat

Eu já estou  na 8° aula do curso de spring-mvc-1 mas desde a 3°, estou tendo
problemas, antes era só quando cadastrava um produto, agora essa é a saida
que aparece no meu console:

SEVERE: Servlet.init() for servlet [SpringDispatcher] threw exception
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productsController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private homecode.CasadoCodigo.daos.DAOProduct homecode.CasadoCodigo.controller.ProductsController.daop; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'DAOProduct': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory] 
...
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private homecode.CasadoCodigo.daos.DAOProduct homecode.CasadoCodigo.controller.ProductsController.daop; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'DAOProduct': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory]
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'DAOProduct': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory]
...
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory]
...
SEVERE: Servlet [SpringDispatcher] in web application [/CasadoCodigo] threw load() exception
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.persistence.EntityManagerFactory]

Porém, embora todos esses erros, e diferente de antes, que não havia o menor
contato com o banco de dados, dessa vez houve uma alteração:

Hibernate: alter table Product_preços drop foreign key FK_2ytx0bjix3jc13fywme06sujd
Hibernate: drop table if exists Product
Hibernate: drop table if exists Product_preços
Hibernate: create table Product (id integer not null auto_increment, desc varchar(255), paginas integer, titulo varchar(255), primary key (id))
Hibernate: create table Product_preços (Product_id integer not null, tipo integer, valor decimal(19,2))
Hibernate: alter table Product_preços add constraint FK_2ytx0bjix3jc13fywme06sujd foreign key (Product_id) references Product (id)
5 respostas

Está errado o nome do pacote, dá uma olhada. Era pra ser ...CasadoCodigo.controller.ProductsController.daos

e você colocou homecode.CasadoCodigo.controller.ProductsController.daop

Esse P que está estragando a brincadeira

Boa tarde Thiago, acontece que esse daop é só um nome 
de uma instância da minha classe DAOProduct, mas ainda
sim eu testei a sua dica, e como eu imaginava, infelizmente
não funcionou.

Manda o código da DAOproduct e da ProductsController, por favor

*imports

@Transactional
@Repository
public class DAOProduct {

    @PersistenceContext
    private EntityManager manager;

    public void gravar(Product prod) {
        manager.persist(prod);
    }

    public List<Product> toList() {
        return manager.createQuery("select p from Product p", Product.class).getResultList();
    }

    public Product find(Integer id) {
        return manager.createQuery("select distinct(p) from Product p join fetch"
                + "p.preços preço where p.id = :id", Product.class)
                .setParameter("id", id).getSingleResult();
    }
}



*imports

@Controller
@RequestMapping("/produtos")
public class ProductsController {

    @Autowired
    private DAOProduct daos;
    @Autowired
    private FileSaver fileSaver;

    @InitBinder
    public void initBinder(WebDataBinder wdb) {
        wdb.addValidators(new ProductsValidation());
    }

    @RequestMapping("/cadastrar")
    public ModelAndView form(Product p) {
        ModelAndView mav = new ModelAndView("products/form");
        mav.addObject("tipos", TypePrice.values());
        return  mav;
    }

    @RequestMapping(method = RequestMethod.POST)
    public ModelAndView record(MultipartFile sumario, @Valid Product product,
            BindingResult bresult, RedirectAttributes ra) {

        if(bresult.hasErrors()) {
            return form(product);
        }

        String arquivo = fileSaver.write("archives-Sumary", sumario);
        product.setSumario(arquivo);
        System.out.println(product);
        daos.gravar(product);
        ra.addFlashAttribute("success", "Product Registered successfully");
        return new ModelAndView("products/sucesso");
        //caso eu queira retornar direto para a lista de produtos ->
        //return new ModelAndView("redirect:produtos/listar");
    }

    @RequestMapping("/listar")
    public ModelAndView listar() {
        List<Product> prods = daos.toList();
        ModelAndView movi = new ModelAndView("products/lista");
        movi.addObject("products", prods);
        return movi;
    }

    @RequestMapping("/detalhes/{id}")
    public ModelAndView details(@PathVariable("id") Integer id) {
        ModelAndView mav = new ModelAndView("products/detalhes");
        Product p = daos.find(id);
        mav.addObject("product", p);
        return mav;
    }
}
solução!
mudei o meu tomcat e a minha jdk e funcionou