J'ai été surpris de récemment apprendre que le comportement hibernate par défaut consiste à mettre à jour tous les champs d'un objet si seulement un seul changement est effectué et que la fusion est appelée.
Dynamic-Update est le champ qui vous permet de configurer Une approche alternative de simplement mettre à jour le champ changé ... p>
http://www.mkyong.com/hibernate/hibernate-dynamic-update-attribute-example/ p>
J'utilise JPA avec hibernate et j'ai essayé d'ajouter ce qui suit < / p> à ma classe (précédemment, il n'avait que l'annotation JPA) p> Quoi qu'il en soit, j'ai surveillé le SQL et malheureusement, cela n'a pas changé et je vois toujours tous les champs mis à jour. P> Ceci est mon java qui met à jour l'objet ... p> et la méthode de mise à jour utilise les éléments suivants : p> Toute aide serait grandement appréciée. p> p>
3 Réponses :
Quelques questions pour vous aider: P>
getUser () code> méthode fonctionne? LI>
- N'utilisez-vous pas d'objets détachés? LI>
- est l'enregistrement associé en fait entièrement chargé de la base de données? li>
ul>
Les objets détachés ne sont liés à aucune version originale, donc l'origine du mot détaché em>. Cela aide à hiberner de faire toute comparaison, ce qui force à effectuer une mise à niveau complète. P>
Comme je l'ai vu sur Forum SpringSource , cela ne fonctionne que lorsque l'option SELECT-UPTER-UPDATE CODE> est définie sur true code> qui semble assez logique car hibernate doit maintenant ce qui a été modifié. L'option SELECT-UPDATEZ-UPDATE-UPDATE force l'option pour avoir lu l'original. P>
Si votre application lit l'utilisateur code> complètement de la base de données et ne fonctionne pas avec des objets détachés, je ne peux pas vous aider avec plus d'idées ... p>
de la documentation hibernate: p>
Assurez-vous d'importer @ javax.persistence.entity pour marquer une classe en tant qu'entité. C'est une erreur commune d'importer @ org.hibernate.annotations.entity par accident. P> blockQuote>
On dirait que l'affiche avait des deux annotations, alors je ne pense pas que l'extrait de la DOCS soit pertinent.
Vous êtes en train de créer un objet détaché via l'appel à la fusion (). Dans ce cas, vous devez activer SelectBeforeUpdate. C'est dans les Javadocs. p>
Est-ce que vous réalisez que l'appel à la mise à jour est totalement inutile? Hibernate persiste automatiquement les modifications apportées à des entités jointes à la fin de la transaction.
Hé, as-tu déjà eu ceci résolu? J'ai le même problème