2013-02-06 7 views
6

Ho il seguente (semplificato) Situazione:org.hibernate.MappingException: ripetuta colonna nella mappatura per la raccolta utilizzando @JoinTable

I campi per la tabella A:

  • ID
  • COMMONID

I campi per la tabella AB:

  • AID
  • BID COMMONID

I campi per la tabella B:

  • ID
  • COMMONID

e vuole mappare con gli enti che utilizzano un OneToMany come questo (nella master class mappata sul tavolo A):

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = false, fetch = FetchType.LAZY) 
@JoinTable(name = "AB", 
joinColumns= { 
    @JoinColumn(name = "AID", referencedColumnName="ID"), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID")}, 
inverseJoinColumns = { 
    @JoinColumn(name = "BID", referencedColumnName="ID"), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID")}) 
private Set<MyClassForB> list= new HashSet<MyClassForB>(); 

Costruire la sessione, ottengo il seguente errore:

org.hibernate.MappingException: Repeated column in mapping for collection using @JoinTable list column: COMMONID 

Che cosa sto facendo di sbagliato? Considera che sono nuovo di Hibernate.

+0

Apparentemente si utilizza 'COMMONID' in un'altra mappatura diversa. –

risposta

0

provare ad aggiungere inseribile, e aggiornabile come questo

@OneToMany(cascade = CascadeType.ALL, orphanRemoval = false, fetch = FetchType.LAZY) 
@JoinTable(name = "AB", 
joinColumns= { 
    @JoinColumn(name = "AID", referencedColumnName="ID", insertable = false, updatable = false), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID", insertable = false, updatable = false)}, 
inverseJoinColumns = { 
    @JoinColumn(name = "BID", referencedColumnName="ID", insertable = false, updatable = false), 
    @JoinColumn(name = "COMMONID", referencedColumnName="COMMONID", insertable = false, updatable = false)}) 
private Set<MyClassForB> list= new HashSet<MyClassForB>(); 

Ma io non sono sicuro se sarà in grado di aggiornare questo set, il mio caso d'uso è stato letto solo.

Problemi correlati