Hibernate + jsf !Não Grava no BD!

6 respostas
W

Ola a tdos, estou com o seguinte problema que já persiste a algum tempo ...
estou usando os codigos abaixo, estou tentando fazer um cadastro ... e registrar no BD, porém não os dados não são indexados, vi vários exemplos e tutoriais o código se assemelhão um pouco com o que fiz, porém alguma coisa não funciona e não estou conseguindo identificar o que ... nada melhor como olhos de terceiros para enchegar o problema, então se alguem tiver alguma dica qualquer coisa que ajude eu agradeço!
[]´s aos colegas !

UsuarioBean:
public class UsuarioBean {
    private Usuario usuario;
    
    public String novoUsuario(){
        this.usuario=new Usuario();
        return "novo";
    }
    
    public String salvar(){
        
        SessionFactory sessions = new Configuration().configure().buildSessionFactory();
        Session session = sessions.openSession();
        Transaction tx = null;
        try{
            tx = session.beginTransaction();
            //salva o objeto
            session.save(usuario);
            tx.commit();
           
        }
        catch(Exception e){
            tx.rollback();
            
        }
        finally{
            //fecha sessao com banco de dados
            session.close();
        }
        return "sucesso";
    }
// get´s e set´s
registro:
<ui:define name="noticias_centro">
        <h:form>
            <rich:panel>
                <f:facet name="header">
                    <h:outputText value="teste" style="color:black;"/>
                </f:facet>
                <div id="padding" style="padding: 20px">
                    <h:outputText  value="Preecha corretamente o formulário, itens com ' * ' são obrigatórios" />
                    <rich:separator height="1"  style="padding:10px 0" />
                    <h:panelGrid style="padding: 15px; color:white;" width="250" columns="2">
                        <h:outputText  value="Nome:"  />
                        <h:inputText    styleClass="cssimput" id="Nome" rendered="true" value="#{usuarioBean.usuario.nome}"   />
                        
                        <h:outputText  value="Login:" />
                        <h:inputText     styleClass="cssimput" value="#{usuarioBean.usuario.login}"  />
                        <h:outputText  value="Senha:" />
                        <h:inputText   styleClass="cssimput" value="#{usuarioBean.usuario.senha}" />
                        <h:outputText  value="Email:" />
                        <h:inputText   styleClass="cssimput" value="#{usuarioBean.usuario.email}" />
                        <h:outputText  value="Nome do Personagem:" />
                        <h:inputText  styleClass="cssimput" value="#{usuarioBean.usuario.nomechar}" />
                        <h:outputText  value="Nome do seu clan:" />
                        <h:inputText   styleClass="cssimput" value="#{usuarioBean.usuario.nomeclan}" />
                        <h:commandButton value="confirma" action="#{usuarioBean.salvar}" styleClass="cssimput" immediate="true"/>
                        
                    </h:panelGrid>
                </div>
                <rich:separator height="1"  style="padding:10px 0" />
            </rich:panel>
        </h:form>
        
    </ui:define>
Parte do arquivo login : onde eu faço o link para a página registro
.....
<h:panelGrid id="out" columns="1" style="color:white;">
                        <h:commandLink value="Registrar" action="#{usuarioBean.novoUsuario}" immediate="true" styleClass="linkdentronoticia" ></h:commandLink> 
                        <rich:spacer height="6"/>
...

Parte do xml com as configuracoes de navegacao

<navigation-rule>
        <from-view-id>/login.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>novo</from-outcome>
            <to-view-id>/registro.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    
    <navigation-rule>
        <from-view-id>/confirma.xhtml</from-view-id>
    </navigation-rule>
    
    <navigation-rule>
        <from-view-id>/registro.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>sucesso</from-outcome>
            <to-view-id>/confirma.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
Usuario.java
public class Usuario implements Serializable   {
    private int Usuarioid;
    private String Nome;
    private String Login;
    private String Senha;
    private String Email;
    private String Nomechar;
    private String Nomeclan;
    private Date Nascimento;
    private int Newsletter;
    private int Nivel;
    private Collection Noticia;

    public  Usuario(){
        
    }  

// get´s e set´s

Bem o que acontece é que eu clico no commandbotton e sou redirecionado para a página confirma.xhtml .... para os dados não são inseridos ...
eu estou usando o Netbeans 6.1 hibernate, usando a configuração por xml mesmo e mysql como BD ...
se alguem tiver uma dica um conselho ... um tutorial qualquer coisa ta valendo ... obrigado !

6 Respostas

W

Alguem tem alguma dica ai please! ^^

W

Ninguem tem nem ideia do que que pode ser ?! !

S

Posso estar enganado… mais está faltando vc fazer as anotações no seu banco para que o Hibernate
possa “saber” saber como trabalhar com ele.
De uma procurada em Artigos aqui no forum, existem otimos materias sobre o assunto.

W

é q na verdade eu nao usei annotation usei a configuracao por xml ...

aki o usuario.hbm.xml

<hibernate-mapping>
    <class dynamic-insert="false" dynamic-update="false" mutable="true" 
  name="dbpersistencia.Usuario" optimistic-lock="version" polymorphism="implicit" 
  select-before-update="false" table="usuario">
        <id name="Usuarioid" column="Usuarioid" type="int">
            <generator class="increment"/>
        </id>
        <property name="Nome" column="Nome" type="string"/>
        <property name="Login" column="Login" type="string"/>
        <property name="Senha" column="Senha" type="string"/>
        <property name="Email" column="Email" type="string"/>
        <property name="Nomechar" column="Nomechar" type="string"/>
        <property name="Nomeclan" column="Nomeclan" type="string"/>
        <property name="Nascimento" column="Nascimento" type="date"/>
        <property name="Newsletter" column="Newsletter" type="int" length="1"/>
        <property name="Nivel" column="Nivel" type="int"/>
      
      <!-- Mapeamento da Coleção de Noticia -->
      
        <set name="noticia" inverse="true" lazy="true">
            <key column="Usuarioid"/>
            <one-to-many class="dbpersistencia.Noticia"/>
        </set>
    </class>
</hibernate-mapping>

tanto é q ele grava no banco de dados se eu usar esse codigo.

public class main {

    public static void main(String[] args) {
        SessionFactory sessions = new Configuration().configure().buildSessionFactory();
        Session session = sessions.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            Usuario u1 = new Usuario();
            Noticia n1 = new Noticia();
            
            n1.setAutor("qqqq");
            n1.setTitulo("primeira noticia");
            n1.setResumo("jsdjashdbasd asdbasdhbahksdad ");
            n1.setConteudo("dssdfsfsdfsfEGGHADFHDFHADFHhdfhd gfd d  dg   " );
            
            u1.setNome("xxxx xxxxxx");
            u1.setLogin("ttt3");
            u1.setSenha("123123");
            u1.setEmail("[email removido]");
            u1.setNomechar("dddd");
            u1.setNomeclan("ssss");
            //u1.setNascimento("elemento tipo date");
            u1.setNewsletter(1);
            u1.setNivel(1);
            session.save(u1);
            session.save(n1);

            tx.commit();
            tx = null;
        } catch (HibernateException e) {
            if (tx != null) {
                tx.rollback();
            }
            e.printStackTrace();
        } finally {
            session.close();
        }
    }
}

assim ele salva no banco... usando o bean ele não salva ... sabes o q q pode ser ?! pq eu to procurando alguma coisa q nem louco q me de uma resposta ... algum exemplo qualquer coisa ...

L

Amigo tire o immediate=“true” que vai funcionar.

W

Merece um beijo igweb! ^^
==>> RESOLVIDO <<==

Criado 18 de outubro de 2008
Ultima resposta 24 de out. de 2008
Respostas 6
Participantes 3