2016-04-07 11 views
0

私はクラスCのコレクションにクラスC とクラスBのコレクションでクラスAをマッピングするためのマッピングで繰り返し列をここで地図hibernate.MappingExceptionを与える:エンティティ

は私のエンティティであります:

@Entity 
@Table(name = "a") 
    Class A: 
    ... 
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinColumn(name = "objectid" , nullable = false, updatable = false) 
    @Where(clause = "field= 'x'") 
    private Set<C> cSet = new HashSet<>(); 

@Entity 
@Table(name = "b") 
    Class B: 
    ... 
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinColumn(name = "objectid" , nullable = false, updatable = false) 
    @Where(clause = "field= 'x'") 
    private Set<C> cSet = new HashSet<>(); 

@Entity 
@Table(name = "c") 
    Class C: 
    ... 
    @Column(name = "objectid") 
    private String objectid; 

私は、例外が発生しました:

hibernate.MappingException: Repeated column in mapping for entity: C column: objectid (should be mapped with insert="false" update="false") 

私はreferencedColumnNameとEXを使用してみました:

Class A: 
    ... 
    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
    @JoinColumn(name = "objectidA" ,referencedColumnName="objectid", nullable = false, updatable = false) 
    @Where(clause = "field= 'x'") 
    private Set<C> cSet = new HashSet<>(); 

成功しません。 提案がありますか?

+0

どのように機能しますか? FK参照objectId 1を持つ表Cの項目は、ID 1の項目AとID 1の項目Bに関連付けられます。これは本当に必要なものですか? –

答えて

0

@JoinColumn注釈を削除した場合は、join tables、1つはA-> C、もう1つはB-> Cになります。これは試しても欲しいものです。