Um simples INSERT maior dor de cabeça

3 respostas
S

Um simples INSERT maior dor de cabeça

Srs. Temos o seguinte:

Pessoa

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


@Entity
@Table(name = "pessoa", schema = "public")
@SequenceGenerator(name = "public.pessoa_sequence_generator", sequenceName = "public.pessoa_sequence_generator")
public class Pessoa {

	private Integer id_pessoa;
	private String tx_nome_completo;
	
	public Pessoa() {
	}

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "public.pessoa_sequence_generator")
	public Integer getId_pessoa() {
		return id_pessoa;
	}

	public void setId_pessoa(Integer id_pessoa) {
		this.id_pessoa = id_pessoa;
	}
	@Column(name = "tx_nome_completo", nullable = false)
	public String getTx_nome_completo() {
		return tx_nome_completo;
	}	
	
	public void setTx_nome_completo(String tx_nome_completo) {
		this.tx_nome_completo = tx_nome_completo;
	}
}

Bean PessoaCadastrar

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

public class PessoaCadastrar {
	private Pessoa pessoa;
	private String resultado;

	public PessoaCadastrar() {
		pessoa = new Pessoa();
		resultado = "";
	}

	public String cadPessoa() {
		try {
			SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
			Session session = sf.openSession();
			Transaction tx = session.beginTransaction();

			Pessoa p = new Pessoa();

			session.save(p);

			tx.commit();
			session.close();
			resultado = "Pessoa cadastrada com sucesso!";

		} catch (HibernateException e) {
			e.printStackTrace();
		}
		return resultado;
	}

	public Pessoa getPessoa() {
		return pessoa;
	}

	public void setPessoa(Pessoa pessoa) {
		this.pessoa = pessoa;
	}
}

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC  
   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   
   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- Configuracoes da conexao -->
		<property name="connection.driver_class">
			org.postgresql.Driver
		</property>
		<property name="connection.url">
			jdbc:postgresql:sap//localhost
		</property>
		<property name="connection.username">postgres</property>
		<property name="connection.password">blabla</property>

		<!-- Pool de conexao -->
		<property name="connection.pool_size">1</property>

		<!-- Dialeto do SQL -->
		<property name="hibernate.dialect">		
			org.hibernate.dialect.PostgreSQLDialect
		</property>

		<!-- Desabilita o Cache -->
		<property name="cache.provide_class">
			org.hibernate.cache.NoCacheProvider
		</property>

		<!-- Mostra os comandos SQL -->
		<property name="show_sql">true</property>

		<!-- mapping classes -->
		<mapping class="Pessoa" />

	</session-factory>
</hibernate-configuration>

cadpessoa.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<html>
<head>
<title>SAPRO :: Sistema de Acompanhamento de Processo</title>
</head>
<body>
<f:view>
	<h:form>
		<h:panelGrid columns="2">
			<h:outputLabel value="Nome" for="un" />
			<h:inputText id="un" value="#{pessoaBean.pessoa.tx_nome_completo}" />						
		</h:panelGrid>			  	
		<h:commandButton value="Salvar" action="#{pessoaBean.cadPessoa}" />					
	</h:form>
</f:view>
</body>
</html>

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>pessoaBean</managed-bean-name>
  <managed-bean-class>PessoaCadastrar</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <from-view-id>/pages/cadpessoa.jsp</from-view-id>
  <navigation-case>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/pages/cadpessoa.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
 <navigation-rule>
  <navigation-case>
   <from-outcome>listarPessoas</from-outcome>
   <to-view-id>/pages/cadpessoa.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
</faces-config>

web.xml

<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<description>sapro</description>
	<display-name>sapro</display-name>
	<context-param>
		<param-name>javax.faces.application.CONFIG_FILES</param-name>
		<param-value>/WEB-INF/faces-config.xml</param-value>
	</context-param>
	<servlet>
		<servlet-name>Faces Servlet</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
		<load-on-startup>1</load-on-startup>				
	</servlet>	
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.faces</url-pattern>
	</servlet-mapping>	
	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>	
</web-app>

[ERROR]

11:26:11,906 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender" was loaded by [org.jboss.system.server.NoAnnotationURLClassLoader@b0ce8f].
11:26:11,906 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FILE".
11:26:12,406 INFO  [STDOUT] 11:26:12,406 INFO  [Version] Hibernate Annotations 3.2.1.GA
11:26:12,593 INFO  [STDOUT] 11:26:12,593 INFO  [Environment] Hibernate 3.2.4.sp1
11:26:12,718 INFO  [STDOUT] 11:26:12,718 INFO  [Environment] hibernate.properties not found
11:26:12,718 INFO  [STDOUT] 11:26:12,718 INFO  [Environment] Bytecode provider name : javassist
11:26:12,750 INFO  [STDOUT] 11:26:12,750 INFO  [Environment] using JDK 1.4 java.sql.Timestamp handling
11:26:13,937 INFO  [STDOUT] 11:26:13,937 INFO  [Configuration] configuring from resource: /hibernate.cfg.xml
11:26:13,953 INFO  [STDOUT] 11:26:13,937 INFO  [Configuration] Configuration resource: /hibernate.cfg.xml
11:27:09,375 ERROR [STDERR] org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1494)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1428)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1414)
	at PessoaCadastrar.cadPessoa(PessoaCadastrar.java:21)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
	at javax.faces.component.UICommand.broadcast(UICommand.java:383)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.dom4j.DocumentException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory Nested exception: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
	at org.dom4j.io.SAXReader.read(SAXReader.java:484)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1484)
	... 37 more

Detalhe, senão tiver usando projeto do TIPO JSF ou seja, usando um MAIN, funciona que é uma blz!

Creio que deva ser uma falta de atenção, já gastei muito cartucho e essa é minha última tentativa!

grato!

supinet

3 Respostas

V

Olhe bem para esta linha

SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();

Não estaria faltando o caminho do seu hibernate-cfg.xml em algum lugar?

S

Eram duas coias:

1 - SessionFactory sf = new AnnotationConfiguration().configure("/hibernate.cfg.xml").buildSessionFactory();
2 - Exclui todas as libs do JBOSS e coloquei as do meu projeto sobscrevendo as do JSBOSS.

E funcionou tudo!

Muito grato!

supinet

Paulo_Silveira

Voce nao precisa chamar .configure("/hibernate.cfg.xml"), esse eh o default.

O problema era voce ter uma lib incompativel do DOM4J no seu path, ele tava pegando versao errada!

Criado 7 de julho de 2008
Ultima resposta 8 de jul. de 2008
Respostas 3
Participantes 3