Question

Est-il possible de contourner @GeneratedValue pour un ID dans Hibernate, nous avons un cas où, la plupart du temps, nous souhaitons que l'ID soit défini à l'aide de GeneratedValue , mais dans certains cas, souhaiterait définir l'identifiant manuellement.

Est-ce possible de le faire?

Était-ce utile?

La solution

Je sais que vous pouvez le faire dans les spécifications JPA, vous devriez donc pouvoir le faire dans Hibernate (en utilisant des annotations JPA +).

Si vous ne remplissez que le champ ID du nouveau modèle persistant que vous créez, vous devez alors "Fusionner". ce modèle dans EntityManager, il utilisera l'ID que vous avez défini.

Cela a cependant des ramifications. Vous venez d'utiliser cet ID, mais la séquence spécifiée par l'annotation GeneratedValue ne le sait pas. Sauf si vous spécifiez un identifiant non utilisé inférieur à la valeur de la séquence actuelle, vous rencontrerez un problème une fois que la séquence reprend la valeur que vous venez d'utiliser.

Alors, je peux peut-être voir où vous voudriez que l'utilisateur puisse spécifier un identifiant, mais vous devez alors capturer l'éventuelle exception (identifiant en double) qui pourrait survenir à l'avenir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top