Erro de persistencia!

12 respostas
rafaelrodrigues1607

Fala galera,

Eu aqui mais uma vez com o mesmo erro.

Não consegui encontrar em lugar algum a solução para esse meu problema. Vamos lá:

Estou tentando persistir os dados usando o:

Ele me traz um erro dizendo que não encontrou a minha entidade mapeada (Paciente):

Inicialmente coloquei no meu persistence.xml o mapeamento:

Mas com ou sem esse mapeamento dá erro do mesmo jeito!!! Não é erro na conexão!!!

Obrigado pela ajuda mais uma vez pessoal!

12 Respostas

drsmachado

E como está mapeando a classe?
Annotation? xml?
Cadê o código da classe e, se xml, do mapeamento dela?

rafaelrodrigues1607

A classe está mapeada usando annotation:

@Entity
@Table(name="paciente")
@Name("paciente")

public class Paciente implements Serializable{
	private static final long serialVersionUID = 5300018309039633585L;

	private String nome;
	private String cpf;
	private String logradouro;
	private String cep;
	private String bairro;
	private String cidade;
	private String complemento;
	private String foneFixo;
	private String foneCelular;
	private String foneComercial;
	private String email;

	@Column(name="de_logradouro")
	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	@Column(name="de_cep")
	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	@Column(name="de_bairro")
	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	@Column(name="de_cidade")
	public String getCidade() {
		return cidade;
	}

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

	@Column(name="complemento")
	public String getComplemento() {
		return complemento;
	}

	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	@Column(name="telefone_fixo")
	public String getFoneFixo() {
		return foneFixo;
	}

	public void setFoneFixo(String foneFixo) {
		this.foneFixo = foneFixo;
	}

	@Column(name="telefone_celular")
	public String getFoneCelular() {
		return foneCelular;
	}

	public void setFoneCelular(String foneCelular) {
		this.foneCelular = foneCelular;
	}

	@Column(name="telefone_comercial")
	public String getFoneComercial() {
		return foneComercial;
	}

	public void setFoneComercial(String foneComercial) {
		this.foneComercial = foneComercial;
	}

	@Column(name="de_email")
	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name="nome_completo")
	public String getNome() {
		return nome;
	}
	
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	@Column(name="de_cpf")
	public String getCpf() {
		return cpf;
	}
	
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}
}

Aqui está xml:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" 
             version="1.0">
             
   <persistence-unit name="odontoSul" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:/odontoSulDatasource</jta-data-source>
      <!--class>br.com.odontosul.entity.Paciente</class--> // Com essa linha ou sem essa linha  erro!!!
      <properties>
         <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
         <property name="hibernate.hbm2ddl.auto" value="update"/>
         <property name="hibernate.show_sql" value="true"/>
         <property name="hibernate.format_sql" value="true"/>
         <property name="jboss.entity.manager.factory.jndi.name" value="java:/odontoSulEntityManagerFactory"/>
      </properties>
   </persistence-unit>
    
</persistence>
drsmachado

A partir do persistence.xml você consegue abrir a classe? E aquela linha deve constar no xml sim.

rafaelrodrigues1607

Consigo acessar a classe sim, pois estou usando o eclipse. Aperto f3 e vai direto para a classe.

rafaelrodrigues1607

Quando eu coloca essa linha no persistence.xml <class>br.com.odontosul.entity.Paciente</class>aparece um erro gigantesco. Vou colocar somente uma parte dele:

DEPLOYMENTS IN ERROR: Deployment "persistence.unit:unitName=#odontoSul" is in error due to the following reason(s): java.lang.ClassNotFoundException: br.com.odontosul.entity.Paciente from BaseClassLoader@a52f9b2{VFSClassLoaderPolicy@4d871a69{name=vfsfile:/C:/Java/servidores/jboss-5.1.0.GA/server/default/conf/jboss-service.xml domain=ClassLoaderDomain@54cee271{name=DefaultDomain parentPolicy=BEFORE parent=org.jboss.bootstrap.NoAnnotationURLClassLoader@4a0c68c3} roots=[MemoryContextHandler@[telefone removido][path= context=vfsmemory://a228i-pl6j40-h2dlbsrl-1-h2dlbwil-7 real=vfsmemory://a228i-pl6j40-h2dlbsrl-1-h2dlbwil-7], DelegatingHandler@[telefone removido][path=ojdbc5.jar context=file:/C:/Java/servidores/jboss-5.1.0.GA/server/default/lib/ real=file:/C:/Java/servidores/jboss-5.1.0.GA/server/default/lib/ojdbc5.jar], DelegatingHandler@[telefone removido][path=postgresql-8.4-701.jdbc4.jar t org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:993) at org.jboss.deployers.plugins.deployers.DeployersImpl.checkComplete(DeployersImpl.java:939) at org.jboss.deployers.plugins.main.MainDeployerImpl.checkComplete(MainDeployerImpl.java:873) at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.checkComplete(MainDeployerAdapter.java:128) at org.jboss.system.server.profileservice.hotdeploy.HDScanner.scan(HDScanner.java:369) at org.jboss.system.server.profileservice.hotdeploy.HDScanner.run(HDScanner.java:255) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source) at java.util.concurrent.FutureTask.runAndReset(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(Unknown Source) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

Hebert_Coelho

Uma classe para ser considerada uma Entity ela precisa de 3 coisas:

  1. Da anotação @Entity
  2. Construtor default, sem parâmetros
  3. Da anotação @Id (oq eu não vi na sua classe Paciente) <--------------
rafaelrodrigues1607

Coloquei o @Id, mas ainda não resolveu!!! O erro continua sendo aquele ultimo que postei.

Hebert_Coelho

Como você colocou o id da sua classe? Qual o pacote descrito na classe?

fbl.lucas

Eu acho que você esta utilizando o @Entity do hibernate ao invés do JPA…

rafaelrodrigues1607

O pacote:

Para o Id eu criei uma sequence:

@Id @SequenceGenerator( name = "paciente_id", sequenceName = "paciente_seq", allocationSize = 1 ) @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "paciente_id" ) @Column( name = "id", nullable = false ) private Long idPaciente;

drsmachado

[quote=fbl.lucas]Eu acho que você esta utilizando o @Entity do hibernate ao invés do JPA…

++

rafaelrodrigues1607

Também pensei que fosse isso, mas estão aqui todos os imports da minha classe:

package br.com.odontosul.entity;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
Criado 18 de maio de 2012
Ultima resposta 18 de mai. de 2012
Respostas 12
Participantes 4