web-dev-qa-db-fra.com

Comment nommer la contrainte de clé étrangère des références ManyToOne depuis JPA 2.1?

@org.hibernate.annotations.ForeignKey a été déconseillé, mais je ne trouve aucun exemple à quoi devrait ressembler l'équivalent JPA 2.1?

@ManyToOne
@ForeignKey(name = "FK_USER") //@deprecated Prefer the JPA 2.1 introduced {@link javax.persistence.ForeignKey} instead.
private User user;

Comment cela doit-il être mis en œuvre sans l'annotation obsolète?

22
membersound

Comme la documentation indique, cette annotation ne peut être appliquée à rien:

@Target (value = {})

Il ne peut donc être utilisé que dans le cadre d'une autre annotation (répertoriée dans la section Voir aussi ):

@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))
50
JB Nizet

Vous avez raison, j'ai mal lu la documentation. Il peut être défini comme faisant partie de @JoinColumn annotation.

Cela devrait ressembler à ça:

@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))
7
Blekit

Insérez-vous @JoinColumn(foreignKey = @ForeignKey(name = "FK_USER")) directement à mappé à l'exemple d'entité:

@ManyToOne
@JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"))
private User user;
0
Robert Danilo