2013-02-06 35 views
6

Tôi có sau tình huống (giản thể):org.hibernate.MappingException: Lặp đi lặp lại cột trong bản đồ cho bộ sưu tập sử dụng @JoinTable

Fields cho BẢNG A:

  • ID
  • COMMONID

Các trường cho BẢNG AB:

  • AID
  • BID COMMONID

Fields cho BẢNG B:

  • ID
  • COMMONID

và muốn để ánh xạ nó với các đơn vị sử dụng một OneToMany như thế này (trong lớp chính được ánh xạ trên bảng 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>(); 

Xây dựng phiên giao dịch, tôi có được các lỗi sau:

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

Tôi đang làm gì sai? Hãy xem xét rằng tôi mới đến Hibernate.

+0

Dường như bạn đang sử dụng 'COMMONID' trong một ánh xạ khác. –

Trả lời

0

Cố gắng thêm insertable, và updateable như thế này

@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>(); 

Nhưng tôi không chắc chắn cho dù bạn sẽ có thể cập nhật bộ này, trường hợp sử dụng của tôi chỉ được đọc.

Các vấn đề liên quan