Hibernate, modifier l'identificateur/clé primaire

Je reçois l'exception suivante quand je suis en train de modifier mon @ID dans un @Entity.

identifier of an instance of com.google.search.pagerank.ItemEntity was altered from 1 to 2.

Je sais que je suis en modifiant la clé primaire de ma table. Je suis en utilisant JPA-annotations.

J'ai résolu ce problème en utilisant cette simple requête HQL: update Table set name=:newName where name=:oldName

Au lieu d'utiliser le plus OO approche:

beginTransaction();
T e = session.load(...);
e.setName(newName);
session.saveOrUdate(e);
commit();

Une idée de ce que la diff est?

  • Sont que vous essayez d'utiliser une autre entité que PK?
  • maintenant, j'essaie de changer mon la clé privée à partir d'un persitent entité. en sql, il serait quelque chose comme: "mise à jour de Clients set customerId = 1492 où customer_id = 42;" et customer_id est ma clé privée
InformationsquelleAutor | 2009-04-09