13
respostas

Lista vazia - Aula 04

Fiz de acordo com o exemplo e não lista os dados.

13 respostas

Oi Anderson, tudo bem ?

Cara você tem algum dado salvo no seu banco de dados?

Olá Anderson, coloca o código pra gente tentar ajudar :)

Sim matheus.

@Repository
@Transactional
public class ReceitaDAO {

    @PersistenceContext
    private EntityManager manager;

    public void gravar(Receita receita){
        manager.persist(receita);        
    }

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

    @Autowired
    private ReceitaDAO receitaDao;

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

    @RequestMapping(value="/receitas", method=RequestMethod.POST)
    public String gravar(Receita receita){
        System.out.println(receita);
        receitaDao.gravar(receita);
        return "receitas/ok";
    }

    @RequestMapping(value="/receitas", method=RequestMethod.GET)
    public ModelAndView listar(){
        List<Receita> receitas = receitaDao.listar();
        ModelAndView modelAndView = new ModelAndView("receitas/lista");
        modelAndView.addObject("receitas", receitas);

        return modelAndView;
    }
}

HTML

                        <c:forEach items="${receitas }" var="receita">
                            <tr>
                                <td>${receita.deposito }</td>
                                <td>${receita.aplicacao }</td>
                                <td>${receita.recurso }</td>
                            </tr>
                        </c:forEach>

seu código está correto, a configuracão do entity manager está certa ?

Classe Receita

@Entity
@SequenceGenerator(sequenceName = "seq_receita" ,name="seq_receita", initialValue=1, allocationSize=1)
public class Receita {

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_receita")
    private int id;

    private double deposito;
    private double aplicacao;
    private double recurso;

    public double getDeposito() {
        return deposito;
    }
    public void setDeposito(double deposito) {
        this.deposito = deposito;
    }
    public double getAplicacao() {
        return aplicacao;
    }
    public void setAplicacao(double aplicacao) {
        this.aplicacao = aplicacao;
    }
    public double getRecurso() {
        return recurso;
    }
    public void setRecurso(double recurso) {
        this.recurso = recurso;
    }
    @Override
    public String toString() {
        return "Receita [deposito=" + deposito + ", aplicacao=" + aplicacao + ", recurso=" + recurso + "]";
    }

Esta gravando de boa. Na hora de listar ele não lista.

Faz um teste por gentileza ?

Vê o que tem dentro da lista do banco, porque to achando bem estranho. Seu código está impecável, vendo dessa forma.

O hibernate nao estava gerando a tabela, criei na mão mesmo acho legal este esquema de criar tabelas pelo hibernate mais gosto de modelar o banco de outra maneira.

Anderson,

Isso pode ter sido devido a maneira que você configurou o persistence.xml.

Da forma que o hibernate cria, deixa mais parecido com o mundo orientado a objetos, o que não acontece quando é criado na mão. Algumas vezes uma má arquitetura do banco de dados pode deixar a aplicacao web lenta ou comprometida.

Contudo, fico feliz que tenha resolvido o problema :D