Erro JPA [RESOLVIDO]

Estou com um problema na hora de dar um find no Usuario para alterá-lo. Alguém me ajuda?

[code]javax.persistence.PersistenceException: org.hibernate.InstantiationException: No default constructor for entity: br.com.entity.Cidade
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:194)
at br.com.service.UsuarioService.alterarUsuario(UsuarioService.java:66)
at br.com.test.testUsuario.alterarUsuario(testUsuario.java:38)
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.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.hibernate.InstantiationException: No default constructor for entity: br.com.entity.Cidade
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:84)
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:100)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.instantiate(AbstractEntityTuplizer.java:351)
at org.hibernate.persister.entity.AbstractEntityPersister.instantiate(AbstractEntityPersister.java:3611)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1275)
at org.hibernate.impl.SessionImpl.instantiate(SessionImpl.java:1264)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1206)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:580)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:174)
… 22 more

[/code]

Classe Usuario

[code]@Entity
@Table(name=“int_usuario”)
public class Usuario implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", nullable = false)
private Long id;

@ManyToOne
@JoinColumn(name = "int_cidade_id", referencedColumnName="id", 
		insertable = true, updatable = true)
private Cidade cidade;

@ManyToOne
@JoinColumn(name = "int_papel_id", referencedColumnName="id")
private Papel papel;

@Column(name="nome", length=100)
private String nome;

@Temporal(TemporalType.DATE)
@Column(name="data_nascimento")
private Date datanascimento;

@Column(name="telefone")
private Integer telefone;

@Column(name="celular")
private Integer celular;

@Column(name="email", length=100)
private String email;

@Column(name="usuario", length=100)
private String usuario;

@Column(name="senha")
private String senha;

@Column(name="cpf_cnpj", length=20)
private String cpf_cnpj;

@Column(name="logradouro", length=300)
private String logradouro;

@Column(name="bairro", length=100)
private String bairro;

@Column(name="cep", length=8)
private Integer cep;

@Column(name="proprietario")
private Boolean proprietario;

private static final long serialVersionUID = 1L;

public Usuario() {
	super();
}

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public Cidade getCidade() {
	return cidade;
}

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

public Papel getPapel() {
	return papel;
}

public void setPapel(Papel papel) {
	this.papel = papel;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public Date getData_nascimento() {
	return datanascimento;
}

public void setDatanascimento(Date datanascimento) {
	this.datanascimento = datanascimento;
}

public Integer getTelefone() {
	return telefone;
}

public void setTelefone(Integer telefone) {
	this.telefone = telefone;
}

public Integer getCelular() {
	return celular;
}

public void setCelular(Integer celular) {
	this.celular = celular;
}

public String getEmail() {
	return email;
}

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

public String getUsuario() {
	return usuario;
}

public void setUsuario(String usuario) {
	this.usuario = usuario;
}

public String getSenha() {
	return senha;
}

public void setSenha(String senha) {
	this.senha = senha;
}

public String getCpf_cnpj() {
	return cpf_cnpj;
}

public void setCpf_cnpj(String cpf_cnpj) {
	this.cpf_cnpj = cpf_cnpj;
}

public String getLogradouro() {
	return logradouro;
}

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

public String getBairro() {
	return bairro;
}

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

public Integer getCep() {
	return cep;
}

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

public Boolean getProprietario() {
	return proprietario;
}

public void setProprietario(Boolean proprietario) {
	this.proprietario = proprietario;
}

public static long getSerialVersionUID() {
	return serialVersionUID;
}

}

[/code]

Falta o construtor da entidade Cidade. “No default constructor for entity: br.com.entity.Cidade”.

Posta aí pra gente a Classe da entidade Cidade.

Retire o método super() do construtor da Classe Usuario.

Coloque o código fonte do seu programa no padrão usado por nós, para melhor entendermos o seu código.

[code]@Entity
@Table(name=“int_cidade”)
public class Cidade implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id", nullable = false)
private Long id;

@Column(name="nome", length=100)
private String nome;

@OneToOne
@JoinColumn(name = "int_estado_id", referencedColumnName="id")
private Estado estado;
	
private static final long serialVersionUID = 1L;

public Cidade(Long id_cidade) {
	super();
	this.id = id_cidade;
}

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public static long getSerialVersionUID() {
	return serialVersionUID;
}

public Estado getEstado() {
	return estado;
}

public void setEstado(Estado estado) {
	this.estado = estado;
}

}[/code]

Usuario Service Método Alterar

[code]public void alterarUsuario(Long id, Long idcidade, Long idpepel, String nome,  String datanascimento,
		Integer telefone, Integer celular, String email, String usuario, String senha, 
		String cpf_cnpj, String logradouro, String bairro, Integer cep, 
		Boolean proprietario){
	EntityManagerFactory emf = Persistence.createEntityManagerFactory("Site");
	EntityManager em = emf.createEntityManager();
	
	Usuario u = (Usuario) em.find(Usuario.class, id);
	
	setValues(idcidade, idpepel, nome, datanascimento, telefone, celular, email, usuario, senha, cpf_cnpj, 
			logradouro, bairro, cep, proprietario, u);
	
	try{
		em.getTransaction().begin();
		em.merge(u);
		em.getTransaction().commit();
	}finally{
		em.close();
		emf.close();
	}
}[/code]

xivan,

Se não sabe como fazer isso, leia isso. Vai ser muito mais fácil encontrar ajuda assim :slight_smile:

Arrumei!

Cria o construtor padrão da classe Cidade:

public Cidade() {  
}  

Valeu Funcionou!