2017-10-02 3 views
0

J'ai besoin de cartographier deux champs d'une entité (dans cet exemple, l'entité Colectivo), qui font référence à la même colonne sur l'entité associée TipoDominio. Est-ce possible?carte JPA @ManyToOne plusieurs champs pointant la même colonne

Colectivo.java

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumns({@JoinColumn(name = "TDM_TAC", referencedColumnName = "IDETDM")}) 
private TiposDominioMantenimiento tdmTac; 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumns({@JoinColumn(name = "TDN_ECO", referencedColumnName = "IDETDM")}) 
private TiposDominioMantenimiento tdnEco; 

TipoDominio.java

@Id 
@Column(name="IDETDM") 
private BigDecimal ideTdm; 

Sinon, comment puis-je le préciser? Merci beaucoup :)

+2

Vous n'avez même pas besoin du 'referencedColumnName', il sera par défaut' id' de l'entité associée. En outre, un @ @ JoinColumn peut être déclaré sans le '@ JoinColumns ' – crizzis

Répondre

1

@JoinColumns ne doit être utilisé que si votre entité associée a des clés composites/multiples.

Donc, comme @crizzis mentionné, un seul @JoinColumn devrait être suffisant pour chaque attribut.

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "TDM_TAC") 
private TiposDominioMantenimiento tdmTac; 

@ManyToOne(fetch = FetchType.LAZY) 
@JoinColumn(name = "TDN_ECO") 
private TiposDominioMantenimiento tdnEco;