Problema com Hibernate e Primefaces

Boa noite pessoal,
Sou iniciante em Java Web e estou tentando desenvolver uma aplicação web com Hibernate + PrimeFaces
Mas estou tendo 2 problemas.

O primeiro é que eu tenho um botão <p:commandButton> na minha tela de Cadastro de Apartamento, e ele só aciona o botão se eu clicar duas vezes, não sei o que pode ser isso…

O segundo é que parece que o Hibernate ta reclamando do meu mapeamento.

  • Para criar o meus POJOS eu utilizei a opção: Novo Assistente de Engenharia Reversado do Hibertate, e depois ulizei a opção: Arquivos de Mapeamento do Hibernate e POJO de Banco de Dados…
    nesta etapa desabilitei a opção para gerar os hbm.xml e selecionei a opção Annotations do Hibernate.

tabela Apartamento

CREATE TABLE cliente( idcliente INTEGER NOT NULL AUTO_INCREMENT, nome VARCHAR(255), cpf VARCHAR(15), rg VARCHAR(15), dtnascimento DATE, telefone VARCHAR(15), numero VARCHAR(255), rua VARCHAR(255), bairro VARCHAR(255), cidade VARCHAR(255), cep VARCHAR(255), PRIMARY KEY (idcliente) )ENGINE=InnoDB;

Apartamento.Java

[code]package br.com.sgh.model;
// Generated 08/04/2013 19:32:52 by Hibernate Tools 3.2.1.GA

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**

  • Apartamento generated by hbm2java
    */
    @Entity
    @Table(name=“apartamento”
    ,catalog=“sgh”
    )
    public class Apartamento implements java.io.Serializable {

    private int idapartamento;
    private String numero;
    private String descricao;
    private Boolean statusApartanto;
    private Double valor;
    private Set hospedagems = new HashSet(0);

    public Apartamento() {
    }

    public Apartamento(int idapartamento) {
    this.idapartamento = idapartamento;
    }
    public Apartamento(int idapartamento, String numero, String descricao, Boolean statusApartanto, Double valor, Set hospedagems) {
    this.idapartamento = idapartamento;
    this.numero = numero;
    this.descricao = descricao;
    this.statusApartanto = statusApartanto;
    this.valor = valor;
    this.hospedagems = hospedagems;
    }

    @Id

    @Column(name=“idapartamento”, unique=true, nullable=false)
    public int getIdapartamento() {
    return this.idapartamento;
    }

    public void setIdapartamento(int idapartamento) {
    this.idapartamento = idapartamento;
    }

    @Column(name=“numero”, length=20)
    public String getNumero() {
    return this.numero;
    }

    public void setNumero(String numero) {
    this.numero = numero;
    }

    @Column(name=“descricao”)
    public String getDescricao() {
    return this.descricao;
    }

    public void setDescricao(String descricao) {
    this.descricao = descricao;
    }

    @Column(name=“statusApartanto”)
    public Boolean getStatusApartanto() {
    return this.statusApartanto;
    }

    public void setStatusApartanto(Boolean statusApartanto) {
    this.statusApartanto = statusApartanto;
    }

    @Column(name=“valor”, precision=22, scale=0)
    public Double getValor() {
    return this.valor;
    }

    public void setValor(Double valor) {
    this.valor = valor;
    }
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=“apartamento”)
    public Set getHospedagems() {
    return this.hospedagems;
    }

    public void setHospedagems(Set hospedagems) {
    this.hospedagems = hospedagems;
    }

}[/code]

Cadastrar.xhtml

[code]<?xml version="1.0" encoding="UTF-8"?>

        <p:panel id="panel" header="Cadastrar Apartamento" style="border: 0px; background: #dddddd;" >
            
            <h:panelGrid columns="3">  
                <h:outputLabel for="numero" value="Número"/>
                <p:inputText size="20" id="numero" value="#{apartamentoController.apartamento.numero}" />
                <p:message for="numero"/>

                <h:outputLabel for="descricao" value="Descrição"/>
                <p:inputText size="20" id="descricao" value="#{apartamentoController.apartamento.descricao}" />
                <p:message for="descricao"/>

                <h:outputLabel for="valor" value="Valor"/>
                <p:inputText size="20" id="valor" value="#{apartamentoController.apartamento.valor}" />
                <p:message for="valor"/>

            </h:panelGrid>
            <center>
                <p:commandButton value="Salvar" action="#{apartamentoController.salvarApartamento()}" ajax="false"/>
                <!--<p:button value="Voltar" id="voltar" action="" />-->
            </center>
        </p:panel>
    </ui:define>
</ui:decorate>
[/code]

log do erro:

Abr 08, 2013 8:18:24 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Abr 08, 2013 8:18:24 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.27
Abr 08, 2013 8:18:24 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\Users\pc\AppData\Roaming\NetBeans\7.2\apache-tomcat-7.0.27.0_base\conf\Catalina\localhost\manager.xml
Abr 08, 2013 8:18:24 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\Users\pc\AppData\Roaming\NetBeans\7.2\apache-tomcat-7.0.27.0_base\conf\Catalina\localhost\ROOT.xml
Abr 08, 2013 8:18:24 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\Users\pc\AppData\Roaming\NetBeans\7.2\apache-tomcat-7.0.27.0_base\conf\Catalina\localhost\SGH.xml
Abr 08, 2013 8:18:27 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.1.1 (FCS 20110408) para o contexto '/SGH’
Abr 08, 2013 8:18:27 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
Abr 08, 2013 8:18:28 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFO: Running on PrimeFaces 3.2
Abr 08, 2013 8:18:28 PM org.apache.catalina.session.StandardManager doLoad
SEVERE: IOException while loading persisted sessions: java.io.InvalidClassException: br.com.sgh.model.Apartamento; local class incompatible: stream classdesc serialVersionUID = -8245939767856181072, local class serialVersionUID = 745164559189432176
java.io.InvalidClassException: br.com.sgh.model.Apartamento; local class incompatible: stream classdesc serialVersionUID = -8245939767856181072, local class serialVersionUID = 745164559189432176
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:604)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1970)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1894)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060)
at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)
at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5282)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Abr 08, 2013 8:18:28 PM org.apache.catalina.session.StandardManager startInternal
SEVERE: Exception loading sessions from persistent storage
java.io.InvalidClassException: br.com.sgh.model.Apartamento; local class incompatible: stream classdesc serialVersionUID = -8245939767856181072, local class serialVersionUID = 745164559189432176
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:604)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1970)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1894)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1777)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1595)
at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1060)
at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)
at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5282)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Abr 08, 2013 8:18:28 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“http-bio-8084”]
Abr 08, 2013 8:18:28 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [“ajp-bio-8009”]
Abr 08, 2013 8:18:28 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 4702 ms
Abr 08, 2013 8:18:29 PM org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
SEVERE: The web application [/SGH] created a ThreadLocal with key of type [javax.faces.context.FacesContext$1] (value [javax.faces.context.FacesContext$1@8801cab]) and a value of type [com.sun.faces.config.InitFacesContext] (value [com.sun.faces.config.InitFacesContext@12da22e9]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
Abr 08, 2013 8:18:30 PM org.apache.catalina.startup.HostConfig checkResources
INFO: Undeploying context [/SGH]
Abr 08, 2013 8:18:30 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor C:\Users\pc\AppData\Roaming\NetBeans\7.2\apache-tomcat-7.0.27.0_base\conf\Catalina\localhost\SGH.xml
Abr 08, 2013 8:18:32 PM com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.1.1 (FCS 20110408) para o contexto '/SGH’
Abr 08, 2013 8:18:32 PM com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes. Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
Abr 08, 2013 8:18:33 PM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFO: Running on PrimeFaces 3.2
numero: 12
descricao:ttk
valor: 12.0
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.annotations.Version
INFO: Hibernate Annotations 3.3.1.GA
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Environment
INFO: Hibernate 3.2.5
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Environment
INFO: hibernate.properties not found
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : cglib
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Environment
INFO: using JDK 1.4 java.sql.Timestamp handling
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Configuration configure
INFO: configuring from resource: /hibernate.cfg.xml
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: Configuration resource: /hibernate.cfg.xml
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.Configuration doConfigure
INFO: Configured SessionFactory: null
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: br.com.sgh.model.Apartamento
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity br.com.sgh.model.Apartamento on table apartamento
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: br.com.sgh.model.Cliente
Abr 08, 2013 8:19:43 PM org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity br.com.sgh.model.Cliente on table cliente
Inicialização do SessionFactory Falhou.org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: br.com.sgh.model.Cliente.hospedagems
Abr 08, 2013 8:19:43 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{apartamentoController.salvarApartamento()}: java.lang.ExceptionInInitializerError
javax.faces.FacesException: #{apartamentoController.salvarApartamento()}: java.lang.ExceptionInInitializerError
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
… 23 more
Caused by: java.lang.ExceptionInInitializerError
at br.com.sgh.utils.HibernateUtil.getSessionFactory(HibernateUtil.java:32)
at br.com.sgh.dao.ApartamentoDaoImp.save(ApartamentoDaoImp.java:13)
at br.com.sgh.controller.ApartamentoController.salvarApartamento(ApartamentoController.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
… 24 more
Caused by: org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined: br.com.sgh.model.Cliente.hospedagems
at org.hibernate.cfg.annotations.CollectionBinder.getCollectionType(CollectionBinder.java:519)
at org.hibernate.cfg.annotations.CollectionBinder.bind(CollectionBinder.java:415)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1621)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:754)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:534)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:286)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.sgh.utils.HibernateUtil.getSessionFactory(HibernateUtil.java:29)
… 34 more

se alguém passou por isso e sabe como resolver esses problemas, eu agradeço :slight_smile:

Posso te dar um conselho? Se você está começando em Java Web, por que você não começa do começo?

JSF é complicado, para integrar com hibernate também será um pouco complicado.

Você vai ficar passando perrengue atoa. =/

é que agora eu já comecei :confused:

Amigo, relaxa, o conselho do amigo Hebert é o que tens de seguir. Mas, não se preocupe JSF e Hibernate, não são complicados, eles até parecem mas não são. Depois que dominares o que vem antes, verás que construir um projeto utilizando essas e outras tecnologias não é tão dificil. Abração !

tentei resolver o problema desta forma mas não obtive sucesso :confused:

http://www.mkyong.com/hibernate/hibernate-error-collection-has-neither-generic-type-or-onetomany-targetentity/

me ajudem x)

[quote=eduardos]é que agora eu já comecei :confused: [/quote]Que pena. Eu nunca tive problema em recomeçar… mas cada um é cada um.

Seu erro é:
InvalidClassException: br.com.sgh.model.Apartamento; local class incompatible: stream classdesc serialVersionUID = -8245939767856181072

Limpe a pasta temporária e tente rodar novamente.

Outro conselho que te dou é, use hibernate com @Annotations

Pra mim, foi mais fácil do que por mapeamento! Voce escreve menos e o resultado é o mesmo!

[quote=RodrigoValentim]Outro conselho que te dou é, use hibernate com @Annotations

Pra mim, foi mais fácil do que por mapeamento! Voce escreve menos e o resultado é o mesmo![/quote]Mas ele não tá usando?

Tá mapeado com @Entity lá uai. O.o

[quote=Hebert Coelho][quote=RodrigoValentim]Outro conselho que te dou é, use hibernate com @Annotations

Pra mim, foi mais fácil do que por mapeamento! Voce escreve menos e o resultado é o mesmo![/quote]Mas ele não tá usando?

Tá mapeado com @Entity lá uai. O.o[/quote]

Sim! :stuck_out_tongue:

Vai ficar jogando Black Ops 2 até 2 da manhã, da nisso! Vira zumbi! rs

essa pasta temporária é aquela que fica dentro do meu tomcat? quando chegar em casa vou tentar isso pra ver se funciona :slight_smile:
o problema de clicar duas vezes no botão pode ter alguma coisa a ver com esse erro?

Boa tarde pessoal,
Acho que resolvi um dos erros, inicialmente quando gerei os pojos pela engenharia reversa do hibernate, as classes com relacionamento vieram assim:

então modifiquei para:

inclusive no parâmetro do construtor, gets e sets.

em seguida adicionei a propriedade targetEntity=“classe_relacionada.class” tanto em Apartamento como em Hospedagens e reparei que ele continuou reclamando dos outros relacionamentos das outras classe, então fiz a mesma coisa pra todas

Apartamento.Java

[code]@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy=“apartamento”, targetEntity=Hospedagem.class)
public Set getHospedagems() {
return this.hospedagems;
}

public void setHospedagems(Set<Hospedagem> hospedagems) {
    this.hospedagems = hospedagems;
}[/code]

Hospedagem.Java

[code]@ManyToOne(fetch=FetchType.LAZY, targetEntity=Apartamento.class)
@JoinColumn(name=“idapartamento”)
public Apartamento getApartamento() {
return this.apartamento;
}

public void setApartamento(Apartamento apartamento) {
    this.apartamento = apartamento;
}[/code]

Ele ta conseguindo salvar no banco já, porém o botão ainda só dispara quando eu clico pela segunda vez.
Na primeira vez eu digito as informações e clico em salvar, ai ele tipo da um refresh na pagina, limpando tudo o que eu digitei, ai eu digitei de novo e ele consegue salvar.
Se alguém já passou por isso souber o que isso pode ser, eu agradeço :slight_smile:

alguém ai já passou por esse problema do botão e conseguiu resolver?