J'utilise Hibernate entity manager 3.5.1-Final avec MS SQL Server 2005 et j'essaie de conserver plusieurs nouvelles entités. Mon entité est annotationally configuré ainsi:JPA/Hibernate/MS SQL Server ne renvoie pas la valeur de l'ID généré
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Après avoir appelé
entityManager.persist(newEntity)
Je ne vois pas l'ensemble generatedId, il reste à 0. Cela provoque l'exception suivante lors de la persistance de la prochaine nouvelle entité:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [x.y.z.MyEntity#0]
Je peux contourner cela en expulsant l'entité récemment persistée du cache avant de persister l'entité suivante, mais ce n'est pas l'idéal. Que dois-je faire pour mettre à jour l'objet correctement après insertion?
J'ai trouvé le problème - c'était une table héritée et je ne me suis pas rendu compte qu'il y avait un déclencheur INSTEAD OF INSERT sur la table qui déformait la valeur @@ IDENTITY transmise à Hibernate. – timbotoolman