2016-04-07 3 views
0

Я хочу, чтобы отобразить класс А с коллекцией класса C. и класс В с коллекцией класса C.Карта 2 лица на третий дает 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

Как это будет работать? Элемент таблицы C с ссылочным объектом FKII 1 будет связан с элементом A с идентификатором 1 и элементом B с идентификатором 1. Это действительно то, что вы хотите? –

ответ

0

Если вы удалите аннотации @JoinColumn, вы получите join tables, один для A-> C и один для B-> C, который должен быть способен делать то, что вы хотите, хотя я не пробовал.

Смежные вопросы