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:
[code]
@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;[/code]
e
[code]@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;
...[/code]
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:
[code]@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;
...[/code]
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…