2016-04-07 2 views
0

Ich mag mit der Sammlung der Klasse C Klasse A zur Karte und Klasse B mit der Sammlung der Klasse C.Karte 2 Entitäten dritten gibt hibernate.MappingException: Wiederholter Spalte in Abbildung für Entität

Hier sind meine Entitäten :

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

bekam ich eine Ausnahme:

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

ich versuchte referencedColumnName EX mit:

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

Ohne Erfolg. Irgendwelche Vorschläge?

+0

Wie würde das funktionieren? Ein Eintrag in Tabelle C mit FK-Referenz-Objekt-ID 1 wird einem Eintrag A mit ID 1 und einem Eintrag B mit ID 1 zugeordnet. Ist das wirklich was Sie wollen? –

Antwort

0

Wenn Sie die @JoinColumn Annotationen entfernen, dann erhalten Sie join tables, eine für A-> C und eine für B-> C, die in der Lage sein sollte zu tun, was Sie wollen, obwohl ich es nicht versuchte.

Verwandte Themen