Erro :org.hibernate.MappingException: An association from the table

1 resposta
P

Olá,

não estou visualizando onde está dando erro referente as tabelas com anotações hibernate

ao executar esse main apresenta o erro abaixo.

Não entendi o que está faltando entre as classes cliente e endereco pois no banco estão 1 cliente para 1 endereco

Se alguém puder me ajudar agradeceria.

abs

public class Locadora {
	public static void main(String[] args) {

		
		Locadora locadora = new Locadora();
		locadora.cadastrarCategorias();
	}

	
	public void cadastrarCategorias(){
		
		String categorias[]={"Aventura","Ação","Policial"};
		Categoria categoria =null;
		CategoriaDAO categoriaDAO = new CategoriaDAO();
		
		for (int i = 0; i < categorias.length; i++) {
			categoria = new Categoria();
			categoria.setDescricao(categorias[i]);
			categoriaDAO.salvar(categoria);
		}
	}
}
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

import org.hibernate.annotations.Parameter;

import com.livro.locadora.cliente.Cliente;

public class Endereco implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7199675802931509520L;

	@Id
	@GeneratedValue(generator="fk_endereco_cod_cliente")
	@org.hibernate.annotations.GenericGenerator(name="fk_endereco_cod_cliente",strategy="foreign",parameters=@Parameter(name="property",value="cliente"))
	@Column(name="cod_cliente")
	private Integer endereco;
	
	@OneToOne(mappedBy="endereco")
	private Cliente cliente;
	
	
	private String rua;
	private String numero;
	private String bairro;
	private String cidade ;
	@Column(name="estado")
	private String uf;
	private String cep;
	private String complemento;
import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

import com.livro.locadora.endereco.Endereco;
import com.livro.locadora.locacao.Locacao;
@Entity
@Table(name="cliente")
public class Cliente implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7611034200283709391L;
    @Id
    @GeneratedValue
    @Column(name="cod_cliente")
	private Integer cliente;
    
    @OneToOne
    @PrimaryKeyJoinColumn(name="cod_cliente")
    private Endereco endereco;
    
    @OneToMany(mappedBy="cliente")
    private List<Locacao> locacoes;
249 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
265 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.6.0.Final
265 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
280 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
280 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
421 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
421 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
546 [main] WARN org.hibernate.util.DTDEntityResolver - recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
624 [main] INFO org.hibernate.cfg.Configuration - Configured SessionFactory: null
748 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.locadora.filme.Filme
843 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.locadora.filme.Filme on table filme
983 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.locadora.categoria.Categoria
983 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.locadora.categoria.Categoria on table categoria
983 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.locadora.midia.Midia
983 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.locadora.midia.Midia on table midia
983 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.locadora.cliente.Cliente
983 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.locadora.cliente.Cliente on table cliente
1061 [main] INFO org.hibernate.cfg.AnnotationBinder - Binding entity from annotated class: com.livro.locadora.locacao.Locacao
1061 [main] INFO org.hibernate.cfg.annotations.EntityBinder - Bind entity com.livro.locadora.locacao.Locacao on table locacao
1093 [main] INFO org.hibernate.cfg.annotations.CollectionBinder - Mapping collection: com.livro.locadora.cliente.Cliente.locacoes -> locacao
Criação Inicial do objeto SessionFactory falhou .Erro :org.hibernate.MappingException: An association from the table cliente refers to an unmapped class: com.livro.locadora.endereco.EnderecoException in thread "main" java.lang.NullPointerException
	at com.livro.locadora.util.Hibernate.CategoriaDAO.salvar(CategoriaDAO.java:22)
	at com.livro.locadora.locadora.Locadora.cadastrarCategorias(Locadora.java:24)
	at com.livro.locadora.locadora.Locadora.main(Locadora.java:11)

Erro ao fechar operação de inserção.Mensagem:null
livro.locadora.util.Hibernate;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import com.livro.locadora.categoria.Categoria;
import com.livro.locadora.conexao.HibernateUtil;

public class CategoriaDAO {

	private Session sessao;
	private Transaction transacao;

	public void salvar(Categoria categoria) {

		try {
			this.sessao = HibernateUtil.getSessionfactory().openSession();
			this.transacao = sessao.beginTransaction();
			this.sessao.save(categoria);
			this.transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Não foi possivel inserir o contato.Erro :"
					+ e.getMessage());
		} finally {
			try {
				if (this.sessao.isOpen())
				  sessao.close();
			} catch (Throwable e2) {
				System.out
						.println("Erro ao fechar operação de inserção.Mensagem:"
								+ e2.getMessage());
			}
		}

	}

1 Resposta

P

o problema era que estva faltando colocar @Entity

@Entity
@Table(name="endereco")
public class Endereco implements Serializable {
Criado 12 de janeiro de 2011
Ultima resposta 12 de jan. de 2011
Respostas 1
Participantes 1