(RESOLVIDO)mapeamento no hibernate

1 resposta
maior_abandonado

bom dia pessoal... bom antes de tudo agradeço pra quem me ajudar ai...

bom, vou direto ao assunto, estou criando um sistema que entre outras coisas vai intermediar compra/venda entre parceiros, sendo assim estou usando o hibernate aqui para criar as minhas tabelas. Tenho uma tb_parceiro e uma tb_venda, sendo que a tb_parceiro tem um id_parceiro e a tb_venda tem um comprador e um vendedor. Considerando que a um parceiro pode ter muitas compras e muitas vendas, mais que a venda ou a compra é para um unico parceiro, acredito que seja um para muitos (um parceiro para muitas compras, um parceiro para muitas vendas).
no código deixei deste jeito:

@Entity
@Table(name="TB_PARCEIRO")
public class Parceiro {

	@Id
	@Column(name="ID_PARCEIRO", nullable=false)
	@GeneratedValue(strategy=GenerationType.SEQUENCE)
	private int parceiroId;
        ...

	@OneToMany(mappedBy="comprador", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	private Collection<Venda> vendasComprador;

	@OneToMany(mappedBy="vendedor", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
	private Collection<Venda> vendasVendedor;

e

@Entity
@Table(name="TB_VENDA")
public class Venda {

	@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	@JoinColumn(name="ID_PARCEIRO", nullable=false)
	private Parceiro comprador;
	
	@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	@JoinColumn(name="ID_PARCEIRO", nullable=false)
	private Parceiro vendedor;	
        ...

está dando a seguinte exceção:

2010-06-04 12:06:38,687 INFO org.hibernate.cfg.annotations.CollectionBinder(3) Mapping collection: net.upaid.cvc.entidades.Parceiro.vendasVendedor -> TB_VENDA
java.lang.ExceptionInInitializerError
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: net.upaid.cvc.entidades.Venda column: ID_PARCEIRO (should be mapped with insert="false" update="false")
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:605)
at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:627)
at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:645)
at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:420)
at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
at org.hibernate.cfg.Configuration.validate(Configuration.java:1099)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1284)
at net.upaid.cvc.util.HibernateUtils.<clinit>(HibernateUtils.java:18)
Exception in thread "main"

eu mudei os dois insert e updateable como disse la na descrição do erro mais ainda não ficou como eu queria, criou apenas um campo la na tabela referenciando o parceiroId, mas não era bem o que eu queria, eu queria dois (um para comprador e outro para vendedor). Deixei o código como abaixo para funcionar deste jeito que não é bem o que eu quero:

@Entity
@Table(name="TB_VENDA")
public class Venda {

	@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	@JoinColumn(name="ID_PARCEIRO", nullable=false, insertable=false, updatable=false)
	private Parceiro comprador;
	
	@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	@JoinColumn(name="ID_PARCEIRO", nullable=false, insertable=false, updatable=false)
	private Parceiro vendedor;
        ...

alguém saberia me ajudar com isso?

editando... resolvi, eu tinha colocado no name da joinColumn o nome da coluna na tabela referenciada, na verdade é o nome da coluna na tabela que referencia, (nesse caso a tb_venda)...

resumidamente eu que comi bola...

1 Resposta

remixlara

Repeated column in mapping for entity: net.upaid.cvc.entidades.Venda column: ID_PARCEIRO

ou seja, a coluna ID_PARCEIRO ta se repetindo, o certo seria

@Entity
@Table(name="TB_VENDA")
public class Venda {

//ID_COMPRADOR
@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="ID_COMPRADOR", nullable=false, insertable=false, updatable=false)
private Parceiro comprador;

//ID_VENDEDOR
@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="ID_VENDEDOR", nullable=false, insertable=false, updatable=false)
private Parceiro vendedor;
...
Criado 4 de junho de 2010
Ultima resposta 4 de jun. de 2010
Respostas 1
Participantes 2