Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema ao persirstir objetos utilizando Spring MVC.

Estou no exercicio 2 do spring MVC e por algum motivo o metodo gravar, onde se econtra o manager.persist não está sendo chamado, não consegui arrumar e desde ontem estou tentando resolver o problema.

Vou postar o código das classes logo abaixo:

package br.com.casadocodigo.daos;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import br.com.casadocodigo.models.Produto;

@Repository
@Transactional
public class ProdutoDAO {

    @Autowired
    private ProdutoDAO produtoDao;

    @PersistenceContext
    private EntityManager manager;

    public void gravar(Produto produto) {
        manager.persist(produto);
        System.out.println("Gravando produto no banco!");
    }

}
package br.com.casadocodigo.models;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Produto {

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String titulo;
    private String descricao;
    private int paginas;


    public String getTitulo() {
        return titulo;
    }
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    public String getDescricao() {
        return descricao;
    }
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }
    public int getPaginas() {
        return paginas;
    }
    public void setPaginas(int paginas) {
        this.paginas = paginas;
    }

    @Override
    public String toString() {
        return "Produto [titulo=" + titulo + ", descricao=" + descricao + ", paginas=" + paginas + "]";
    }
}
package br.com.casadocodigo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

import br.com.casadocodigo.controllers.HomeController;
import br.com.casadocodigo.daos.ProdutoDAO;

@EnableWebMvc
@ComponentScan(basePackageClasses={HomeController.class,ProdutoDAO.class})
public class AppWebConfiguration {

    @Bean
    public InternalResourceViewResolver internalResourceViewResolver(){
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}
@Controller
public class ProdutosController {


    @RequestMapping("/produtos/form")
        public String form(){
            return "produtos/form";
        }

    @Autowired
    private ProdutoDAO produtoDao;

     @RequestMapping("/produtos")
     public String gravar(Produto produto){
         System.out.println(produto);         
         return "produtos/ok";
     }
}
1 resposta
solução!

Fala Lucas, tudo bem ?

Então, repare na action do Controller:

@RequestMapping("/produtos")
public String gravar(Produto produto){
     System.out.println(produto);         
     return "produtos/ok";
}

Perceba que você tem o dao injetado no controller, mas na action que atende a requisição ele não está sendo usado pra chamar o método dao.gravar(produto); Apenas o sysout é chamado antes de retornar a página.

Abraço!