Je sais que vous pouvez le faire dans la spécification JPA, vous devriez donc pouvoir utiliser Hibernate (en utilisant les annotations JPA +).
Si vous venez de remplir le champ ID du nouveau modèle persistant que vous créez, lorsque vous fusionnez 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. À moins que vous spécifiiez un ID non activé inférieur à la valeur de séquence actuelle, vous obtiendrez un problème une fois que la séquence atteindra la valeur que vous venez d'utiliser. Donc, peut-être que je peux voir où vous pourriez vouloir que l'utilisateur puisse spécifier un ID, mais alors vous devez attraper l'Exception possible (identification de double) qui pourrait venir dans le futur.
Dans mon cas, il n'y aurait pas de doublon, car l'ID serait généré à partir de la même séquence dans les deux cas, juste à différents points de la transaction. –
J'ai un doute à ce sujet, voir des questions comme http://stackoverflow.com/questions/3194721/bypass-generatedvalue-in-hibernate-merge-data-not-in-db et http://stackoverflow.com/questions/2108178/id-generatedvalue-but-set-own-id-valeur. –
Je ne pense pas que ce soit correct non plus. Il ne fonctionne certainement pas en hibernation et j'ai aussi des doutes que cela fonctionnerait avec la plupart des fournisseurs d'APP. – cyberoblivion