1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Algo de errado em salvar registros usando CDI

O meu código está dando mensagem de sucesso em salvar o registro, mas na realidade ele não está salvando, já verifiquei no banco de dados, não está gerando mensagem de erro, e apresenta está o código todo certo, o que será que se passa para isso acontecer?

Minha classe Bean

package br.com.terezinha.imobiliaria.controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.bean.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.terezinha.imobiliaria.model.Cidade;
import br.com.terezinha.imobiliaria.repository.Cidades;
import br.com.terezinha.imobiliaria.services.CadastroCidadeService;
import br.com.terezinha.imobiliaria.util.FacesUtil;

@Named
@ViewScoped
public class CadastroCidadeBean implements Serializable {

    private static final long serialVersionUID = 1L;

    private Cidade cidade;


    @Inject
    private CadastroCidadeService cadastroCidadeService;


    @Inject
    private Cidades cidades;

    public CadastroCidadeBean() {
        cidade = new Cidade();
    }

//    public void inicializar() {
//        System.out.println("iniciaando ........");
//        if (FacesUtil.isNotPostback()) {
//            todasCidades = cidades.raizesC();
//        }
//    }
//    

    public void salvar(){
        this.cidade = cadastroCidadeService.salvar(cidade);
        FacesUtil.addInfoMessage("Cidade salvo com sucesso");
    }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }


    public Cidades getCidades() {
        return cidades;
    }

    public void setCidades(Cidades cidades) {
        this.cidades = cidades;
    }

}

Minha classe que inseri o registro;

package br.com.terezinha.imobiliaria.repository;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.persistence.EntityManager;

import br.com.terezinha.imobiliaria.model.Cidade;

public class Cidades implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Inject
    private EntityManager manager;

    public Cidade porId(Long id) {
        return manager.find(Cidade.class, id);

    }


    public List<Cidade> raizesC(){
        return manager.createQuery("from Cidade order by nome", Cidade.class).getResultList();
    }



    public Cidade guardar(Cidade cidade) {
        return manager.merge(cidade);
    }



}

/////////////////////////////////////

*/
private static final long serialVersionUID = 1L;


@Inject
private Cidades cidades;


@Transactional
public  Cidade salvar(Cidade cidade){
    return cidades.guardar(cidade);
}

Minha pagina

<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <ui:define name="titulo">Novo produto</ui:define>

    <ui:define name="corpo">



        <h:form>

            <h1>Nova Cidade</h1>

            <p:messages autoUpdate="true" closable="true" />

            <p:toolbar style="margin-top: 20px">
                <p:toolbarGroup>
                    <p:button value="Novo" />
                    <p:commandButton value="Salvar" id="botaoSalvar"  action="#{cadastroCidadeBean.salvar}" update="@form"/>
                </p:toolbarGroup>
                <p:toolbarGroup align="right">
                    <p:button value="Pesquisa" />
                </p:toolbarGroup>
            </p:toolbar>

            <p:panelGrid columns="2" id="painel"
                style="width: 100%; margin-top: 20px" columnClasses="rotulo, campo">
                <p:outputLabel value="Nome da cidade" for="cidade" />
                <p:inputText id="cidade" size="20" maxlength="20"
                    value="#{cadastroCidadeBean.cidade.nome}" />


            </p:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>

O caminho do meu projeto no repositorio GitHub

https://github.com/wladimirbandeira/Terezinha.Adm

  • Você está utilizando Tomcat?

    rogerio_gentil   05 de out de 2015
  • tente colocar a assinatura @Transactional no metodo guardar

    Vitor Silverio Rodrigues   06 de out de 2015
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags cdi jsf java ou faça a sua própria pergunta.