2012-07-27 5 views
2

Hibernate Version: 4.0.1.Final/JPAHibernate/JPA: cascade inattendue sur la fusion

Bonjour,

je veux fusionner une table individuelle. Après l'exécution de entityManager.merge(), toutes les tables enfants sont sélectionnées dans la base de données.

Les tables enfants sont annotés dans le parentTable avec:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "parentTable") 

Il n'y a pas d'annotation en cascade. Je ne veux pas mettre en cascade les tables enfant lors de la fusion. Comment puis-je désactiver la cascade lors de la fusion?

@Transactional 
public void save() { 
    entityManager.merge(parentTable); //cascades child´s here 
} 

Seules les tables enfants qui ont été récupérées précédemment ont été récupérées.

Merci tak3shi

+0

Avez-vous trouvé une solution finale pour bloquer la cascade de fusion? –

Répondre

0

Toutes les cascades sont désactivées par défaut. Si vous ne voulez pas mettre en cascade, ajoutez simplement l'attribut cascade à l'annotation @OneToMany.

D'autre part, si vous voulez en cascade tout le reste, à l'exception de fusion, après l'utilisation:

@OneToMany(fetch = FetchType.LAZY, 
      mappedBy = "parentTable" 
      cascade = {CascadeType.DETACH, CascadeType.PERSIST, 
         CascadeType.REFRESH, CascadeType.REMOVE}) 

Peut-être il y a un autre problème qui n'a rien à voir avec l'opération de fusion en cascade. Dans ce cas, montrer les entités et comment le code qui les crée et les fusionne serait utile.

+0

Je n'utilise aucune cascade. J'ai également essayé de mettre seulement CascaType.DETACH mais il cascades toujours sur la fusion. – tak3shi

+0

@Transactional public void save() { entityManager.merge(parentTable); //cascades child´s here } tak3shi

+0

Qu'est-ce qui vous fait penser qu'il y a fusion résultant de cette opération? Quels changements sont réellement effectués pour les entités dans la liste? Très probablement, vous voyez des requêtes qui sont connectées à l'état de relation entre le parent et ses enfants et cela n'a rien à voir avec la fusion. L'enregistrement de la relation modifiée entre parent et childrens fait partie de l'enregistrement de l'état du parent (dans ce cas, via l'opération de fusion). –