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