Fórum Mapear duas Entidades para a mesma coluna no banco #410140

03/12/2011

0

Bom dia.
Pessoal, preciso fazer a camada ORM para a seguinte modelagem.
No banco de dados, foi modelado uma tabela pessoa com N contatos e Endereços.
essa tabela pessoa está categorizada, então terei diferentes tipos de pessoas, como por exemplo, Cliente, Fornecedor, Funcionário e Transportador.
No java então modelo diferentes entidade, Cliente, Fornecedor, etc, pois cada tipo de pessoa, possuem regras de negocio especificas.

Bom agora que descrevi o ambiente, preciso saber como faço para mapear essas classe, para a mesma coluna na table de contato.

Abaixo segue os codigos

Entidade de Cliente


@Entity
@Table(name = pessoa)
public class Cliente  implements Serializable {

	private static final long serialVersionUID = -893996185060004864L;
	
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer pessoaID;
	
	@Column(nullable=false, length = 5)
	private String tipoPessoa;
	
	@Column(nullable=false, length = 100)
	private String nome;
	
	@Column(length = 100)
	private String razaoSocial;

	@Column(nullable=false, unique=true)
	private String cnpf;
	
	private String rgInscEstadual;
	
	@Column(nullable=false)
	private Boolean status;
	
	private String obs;
}


Entidade de Fornecedor



@Entity
@Table(name = pessoa)
public class Fornecedor {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer pessoaID;
	
	@Column(nullable=false, length = 5)
	private String tipoPessoa;
	
	@Column(nullable=false, length = 100)
	private String nome;
	
	@Column(nullable=false, length = 100)
	private String razaoSocial;
	
	@Column(nullable=false, length = 14)
	private String cnpf;
	
	@Column(length = 20)
	private String rgInscEstadual;
	
	@Column(nullable=false)
	private Boolean status;
	
}



e a classe contato



@Entity
@Table(name = pessoa)
public class Fornecedor {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer pessoaID;
	
	@Column(nullable=false, length = 5)
	private String tipoPessoa;
	
	@Column(nullable=false, length = 100)
	private String nome;
	
	@Column(nullable=false, length = 100)
	private String razaoSocial;
	
	@Column(nullable=false, length = 14)
	private String cnpf;
	
	@Column(length = 20)
	private String rgInscEstadual;
	
	@Column(nullable=false)
	private Boolean status;
	
}




@Entity
@Table(name = contato)
public class Contato implements  Serializable{

	private static final long serialVersionUID = 1116058132248806046L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer contatoID;
	
	@ManyToOne
	@JoinColumn(name = pessoaID)
	private Cliente cliente;
	
	@ManyToOne
	@JoinColumn(name = pessoaID)
	private Fornecedor fornecedor;
	
	@ManyToOne
	@JoinColumn(name=filialID)
	private Filial filial;
	
	@ManyToOne
	@JoinColumn(name=unidadeID)
	private Unidade unidade;
	
	@Column(length = 100)
	private String nome;
	
	@Column(length = 100)
	private String email;

	@Column(length = 20)
	private String telefone;
	
	@Column(length = 20)
	private String celular;
	
	@Column(length = 100)
	private String voip;
	
}



Mas ao fazer isso, o hibernate me gera a seguinte Exception

Repeated column in mapping for entity: classe.projeto.contato.Contato column: pessoaID (should be mapped with insert=false update=false)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:676)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:698)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:720)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:474)
at org.hibernate.mapping.RootClass.validate(RootClass.java:235)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1362)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1865)
at classe.projeto.utils.Conexao.buildSessionFactory(Conexao.java:16)

Como faço o mapeamento dessas entidades
Daniel Everling

Daniel Everling

Responder

Posts

03/12/2011

Robson Teixeira

pesquise sobre as estrategias de persistencia com objetos na mesma arvore de herança exemplo
exemplos
public class Cliente extends Pessoa implements Serializable,
public class Fornecedor extends Pessoa ....


Assim
você vai persistir seus Objetos Firnecedor,Cliente e Contato mantendo elas com a mesma superclasse
pesquise sobre as estrategias de persistencia com as classes do modelo em herando da mesma superclasse que também faz parte do modelo.

espero que tenha ajudado
att
robson
Responder

Gostei + 0

03/12/2011

Daniel Everling

Bah, ROBSON PASSARELLA TEIXEIRA.
Você salvou meu final de semana, sua sugestão funcionou.
Muito obrigado
Responder

Gostei + 0

05/12/2011

Davi Costa

Show de bola Daniel.
assim que possível favor fechar o chamado.

att Davi
Responder

Gostei + 0

06/12/2011

Dyego Carmo

Opa !

Resolvido ?

Poderia fechar o chamado ?

Valeu !
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar