10
votes

JPA: Donnez un nom à une clé étrangère sur la DB?

J'ai des questions simples. Comment puis-je donner un nom aux relations clés étrangères qui découlent de l'annotation @ MétéoTone?


1 commentaires

Peut-être que ce n'était pas clair dans la question?


4 Réponses :


4
votes

Si vous souhaitez nommer la colonne utilisée dans la clé étrangère, on peut spécifier le nom de la colonne utilisée pour créer la clé étrangère à l'aide de l'annotation @JOINCOLUN avec le @Manytoone Annotation. La valeur du nom attribut de l'annotation @JOINCOLUMN est utilisée par le fournisseur JPA pour mapper le nom de la colonne dans la table de l'attribut de l'entité.

Cependant, le nom de la contrainte de clé étrangère créée elle-même ne peut pas être configuré. Au moment de la rédaction de cela, il n'est pas possible de spécifier le nom de la contrainte de clé étrangère à l'aide d'un paramètre d'annotation ou de configuration JPA dans les fichiers ou de mappage. Si vous devez modifier le nom de la contrainte de clé étrangère, vous devez créer vous-même la déclaration DDL, au lieu de compter sur le fournisseur de la JPA pour le faire.


2 commentaires

Bien que la mise en œuvre des solutions spécifiques puisse exister, par exemple, Hibernate a l'annotation @Forignkey.


Vérifiez @borjab Réponse, il y a une alternative maintenant.



5
votes

A partir de JPA 2.1 Il est possible de définir des clés étrangères via @Forignkey annotation.

Malheureusement, il n'est pas très utile si vous n'avez besoin que de changer le nom. Si vous spécifiez le nom personnalisé du FK, vous devez également spécifier la définition SQL du FK. C'est au moins la façon dont il fonctionne dans Eclipselink 2.5.0.


0 commentaires

23
votes

avec jpa 2.1 Vous pouvez simplement faire cela avec le Annotation de l'entreprise : xxx

ne confondez pas avec le équivalent hibernate obsolète


1 commentaires

C'est la réponse que j'ai recherchée, merci beaucoup, je n'ai pas pu faire fonctionner dans des relations de plustoManany, mais à MétéoOne ça marche comme un charme.



0
votes

Je pense que @Forignkey ne fonctionne pas avec @jointables ou je ne sais pas comment définir des noms personnalisés par cela, je l'ai essayé sur @ jointabe-> ForeyKey et @ Joincolumn-> Foreykey


0 commentaires