web-dev-qa-db-fra.com

JPA: annotation de clé étrangère

J'ai deux entités de base de données: Forum et Topic.

Topic a protected long forumId membre de données, qui indique bien sûr le forum de Topic.

Ma question est quelle annotation utiliser pour ce membre de données?

21
socksocket

Comme Forum comporte de nombreux sujets et qu'un sujet appartient à un seul et unique Forum, vous souhaiterez probablement utiliser un attribut de type Forum annoté avec @ManyToOne :

@ManyToOne
@JoinColumn(name = "forumId")
private Forum forum;

Voir plus:

ManyToOne et mappage JPA

34
Elias Dorneles

Comme d'autres l'ont répondu -
Vous devez utiliser les annotations ManyToOne et JoinColumn.
Gardez à l'esprit que, puisque JPA concerne ORM - Mappage relationnel d'objets,
Vous devez référencer un autre objet comme vous l'auriez fait "naturellement" dans Java - c'est-à-dire via un objet et non via son identifiant (qui est forumId) dans votre cas),
C'était l'une des considérations de conception entre les relations entre JPA et Hibernate (auparavant avec JPA).

5
Yair Zaslavsky

@ManyToOne Comme l'annotation l'indique - vous avez de nombreux sujets par forum

1
munyengm