Erro com Annotations hibernate

Ola bom dia a tds estou com o seguinte erro no meu mapeamento com anotações no hibernate

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at daoCliente.daoCliente.salvar(daoCliente.java:68)
	at Test.main(Test.java:10)
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: model.Cliente.cod_cliente in model.Contato.cod_cliente
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:543)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:508)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at Conexao.ConSys.<clinit>(ConSys.java:12)
	... 2 more

Alguem sabe o que pode ser? se precisar eu posto o codigo desde ja mto obrigado abraços

Pelo que eu entendi com o seu erro, você está pecando no mapeamento de referência da classe Contato para a classe Cliente.

Faz o seguinte, posta o seu código, com as anotações, aqui para facilitar a resolução do erro.

Abraço.

Contato.java

package model;

import java.util.Set;

import javax.persistence.*;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity @Table(name="contato")
public class Contato {	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name="codigo")
	private int codigoContato;
	@OneToMany(mappedBy ="contato",fetch = FetchType.LAZY)	
	@Cascade(CascadeType.ALL)
	@OrderBy("nome ASC")
	private Set<Cliente> cod_cliente;
	private String nome;
	private String sobrenome;
	private String setor;
	private int fone;
	private int ramal;
	private String email;
	public Contato(){}
	public Contato(Set<Cliente> cliente, int codigo, String nome, String sobrenome,
			String setor, int fone, int ramal, String email) {		
		this.cod_cliente = cliente;
		this.codigoContato = codigo;
		this.nome = nome;
		this.sobrenome = sobrenome;
		this.setor = setor;
		this.fone = fone;
		this.ramal = ramal;
		this.email = email;
	}
	public Set<Cliente> getCliente() {
		return cod_cliente;
	}
	public void setCliente(Set<Cliente> cliente) {
		this.cod_cliente = cliente;
	}
	public int getCodigo() {
		return codigoContato;
	}
	public void setCodigo(int codigo) {
		this.codigoContato = codigo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSobrenome() {
		return sobrenome;
	}
	public void setSobrenome(String sobrenome) {
		this.sobrenome = sobrenome;
	}
	public String getSetor() {
		return setor;
	}
	public void setSetor(String setor) {
		this.setor = setor;
	}
	public int getFone() {
		return fone;
	}
	public void setFone(int fone) {
		this.fone = fone;
	}
	public int getRamal() {
		return ramal;
	}
	public void setRamal(int ramal) {
		this.ramal = ramal;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}

}
}


Cliente.java



package model;

import java.util.Date;
import java.util.Set;

import javax.persistence.*;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.CascadeType;
import model.Contato;
@Entity @Table(name="cliente")
public class Cliente implements  java.io.Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	//@GeneratedValue(strategy = GenerationType.native)
	@Column(name="codigo")
	private int codigoCliente;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name="cod_cliente",
	insertable=true, updatable=true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Contato contato;
	private String nome;
	private int cpf ;
	private int rg;
	private String banco;
	private int conta;
	private int agencia;
	private int digito;
	private String praca;
	@Temporal(TemporalType.DATE)
	private Date data=new Date();
	private int fone;
	private String rua;
	private String bairro;
	private int numero;
	private String cidade;
	private char uf;
	private int cep;
	private String email;
	
	
	public Cliente(){}
	
	public int getCodigo() {
		return codigoCliente;
	}
	public void setCodigo(int codigo) {
		this.codigoCliente = codigo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getCpf() {
		return cpf;
	}
	public void setCpf(int cpf) {
		this.cpf = cpf;
	}
	public int getRg() {
		return rg;
	}
	public void setRg(int rg) {
		this.rg = rg;
	}
	public String getBanco() {
		return banco;
	}
	public void setBanco(String banco) {
		this.banco = banco;
	}
	public int getConta() {
		return conta;
	}
	public void setConta(int conta) {
		this.conta = conta;
	}
	public int getAgencia() {
		return agencia;
	}
	public void setAgencia(int agencia) {
		this.agencia = agencia;
	}
	public int getDigito() {
		return digito;
	}
	public void setDigito(int digito) {
		this.digito = digito;
	}
	public String getPraca() {
		return praca;
	}
	public void setPraca(String praca) {
		this.praca = praca;
	}
	public Date getDate() {
		return data;
	}
	public void setDate(Date data) {
		this.data = data;
	}
	public int getFone() {
		return fone;
	}
	public void setFone(int fone) {
		this.fone = fone;
	}
	public String getRua() {
		return rua;
	}
	public void setRua(String rua) {
		this.rua = rua;
	}
	public String getBairro() {
		return bairro;
	}
	public void setBairro(String bairro) {
		this.bairro = bairro;
	}
	public int getNumero() {
		return numero;
	}
	public void setNumero(int numero) {
		this.numero = numero;
	}
	public String getCidade() {
		return cidade;
	}
	public void setCidade(String cidade) {
		this.cidade = cidade;
	}
	public char getUf() {
		return uf;
	}
	public void setUf(char uf) {
		this.uf = uf;
	}
	public int getCep() {
		return cep;
	}
	public void setCep(int cep) {
		this.cep = cep;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Contato getContato() {
		return contato;
	}
	public void setContato(Set contato) {
	contato = contato;
	}
	public Cliente(int codigo ,String nome, int cpf, int rg, String banco,
			int conta, int agencia, int digito, String praca, Date date,
			int fone, String rua, String bairro, int numero, String cidade,
			char uf, int cep, String email) {
		
		this.codigoCliente = codigo;
		this.nome = nome;
		this.cpf = cpf;
		this.rg = rg;
		this.banco = banco;
		this.conta = conta;
		this.agencia = agencia;
		this.digito = digito;
		this.praca = praca;
		this.data = date;
		this.fone = fone;
		this.rua = rua;
		this.bairro = bairro;
		this.numero = numero;
		this.cidade = cidade;
		this.uf = uf;
		this.cep = cep;
		this.email = email;
	}
	

}


}



tá ai,se puder ajudar agradeço

Na linha acima mude, na classe Contato.java, de “cod_cliente” para “codigo” e teste. Então ficaria assim:

...
@OneToMany(mappedBy ="codigo",fetch = FetchType.LAZY)
...

Abraço.

nao funfo não deu outro erro:


Exception in thread "main" java.lang.ExceptionInInitializerError
	at daoCliente.daoCliente.salvar(daoCliente.java:68)
	at Test.main(Test.java:10)
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: model.Cliente column: codigo (should be mapped with insert="false" update="false")
	at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:652)

acho q é pq ja tem um atributo codigo

   @Id  
     @GeneratedValue(strategy = GenerationType.AUTO)  
     @Column(name="codigo")  
     private int codigo;  
       
     @OneToMany(mappedBy ="codigo",fetch = FetchType.LAZY)  
     @Cascade(CascadeType.ALL)  
     @OrderBy("nome ASC")  
#     private Set<Cliente> cod_cliente;  

Quando temos um mapeamento bidirecional, o atributo “mappedBy” da anotação deve fazer referência ao atributo ou campo da classes, que quer alcançar. No seu caso o mappedBy, da anotação @OneToMany na classe Contato, deve apontar para a propriedade código da classe Cliente, desse modo vc poderá navegar nas duas direções no relacionamento.

lgweb,

Tenta alterar o mappedBy para “contato” e testa.

Abraço.

[quote] Tenta alterar o mappedBy para “contato” e testa.

Abraço.[/quote]

blz agora parou aquele erro e apareceu outro:


log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.ClassCastException: org.hibernate.impl.SessionFactoryImpl cannot be cast to org.hibernate.Session
	at daoCliente.daoCliente.salvar(daoCliente.java:68)
	at Test.main(Test.java:10)
Exception in thread "main" java.lang.ClassCastException: org.hibernate.impl.SessionFactoryImpl cannot be cast to org.hibernate.Session

Cara, isso é erro de Cast. Portanto, reveja as classes que você está utilizando e procure manter a compatibilidade destes. Ao invés de utilizar SessionFactoryImpl, utilize Session. Não sei se resolverá, tem que tentar.

Acho que vale a pesquisa antes de tentar reportar isso para o grupo. Por exemplo, copiar o erro buscar no Google.

Abraço.

Procurei no google mas nao consegui resolver este problema, ta dando este erro agora, acho que o relacionamento das minhas classes estao errados seria um cliente tem n contatos e um contato tem um cliente.

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.exception.SQLGrammarException: could not insert: [model.Cliente]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
	at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
	at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
	at daoCliente.daoCliente.salvar(daoCliente.java:71)
	at Test.main(Test.java:10)
Caused by: org.postgresql.util.PSQLException: ERROR: column "cod_cliente" of relation "cliente" does not exist
	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1512)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1297)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:437)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:307)
	at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247)
	... 12 more
Hibernate: insert into cliente (cod_cliente, nome, cpf, rg, banco, conta, agencia, digito, praca, data, fone, rua, bairro, numero, cidade, uf, cep, email, codigo) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
ok


Exatamente! Isso é um erro de modelagem. Reveja sua modelagem. Se você quer que um cliente tenha uma lista de contatos, então na classe cliente você tem que ter uma lista de contatos. Se você coloca uma lista de clientes na classe contato, você está fazendo o inverso do que você pretende fazer. Procure ler os erros que aparecem na sua aplicação e entendê-los. Facilita a resolução dos novos problemas.

Abraço.

agora funfo realmente amigo eu tinha mapeado a colecao do lado errado valew mto obrigado pela forca t+
abraços

Bom dia

Pelo que eu entendi vc deve estar fazendo um @OneToMany

o esta no segunto passo do relacionamento!