J'ai quelques problèmes pour effacer un contenu quand il y a beaucoup de relations avec un autre objet.Hibernate ManyToMany Delete
Pour effectuer je supprimer un tableau de requête nommée et de supprimer, je boucle dans le tableau et effectuer supprimer, entité par entité, comme ceci:
private static final String[] DELETE_CONTENT_QUERY_NAMES = {
"Entity1.deleteByContentId",
"Entity2.deleteByContentId",
"Entity3.deleteByContentId",
"Entity4.deleteByContentId",
"Entity5.deleteByContentId",
"EntityWithManyToMany.deleteByContentId",
"Entity7.deleteByContentId",
"Content.DeleteByContent"
};
@Override
@Transactional
public void deleteContent(Content content) throws Exception{
Map<String, Object> params = new HashMap<String, Object>();
params.put("contentId", content.getContentId());
for (String queryName : DELETE_CONTENT_QUERY_NAMES) {
dao.batchDeleteByNamedQuery(queryName, params);
}
}
Lorsque itération essayez d'effectuer EntityWithManyToMany.deleteByContentId Requête batch HQL, je peux voir sur les logs l'instruction SQL traduite, mais suivie d'un ensemble d'insert de la même ligne et MySQL me renvoie à juste titre une erreur de contrainte.
Ceci est mon nombre à plusieurs objets de relation je tente de supprimer:
@Entity
@Embeddable
public class CategoryContent implements java.io.Serializable {
/***
* Private Declarations
*/
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "contentId", column = @Column(
name = "CONTENT_ID",
nullable = false, precision = 10, scale = 0)),
@AttributeOverride(name = "categoryId", column = @Column(
name = "CATEGORY_ID",
nullable = false, precision = 10, scale = 0))
})
@NotNull
private CategoryContentId id;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.PERSIST)
@JoinColumn(name = "CATEGORY_ID", insertable=false, updatable=false)
private Category category;
@ManyToOne(fetch = FetchType.EAGER, cascade=CascadeType.PERSIST)
@JoinColumn(name = "CONTENT_ID", insertable=false, updatable=false)
private Content content;
@Column(name = "PRIORITY", nullable = true)
private Integer priority;
}
Pensez-vous qu'il est possible que le problème concerne CascadeTypes? Comment puis-je resoudre ceci?
Toutes les suggestions sont appréciées! Merci beaucoup, Davide.
ne fonctionne malheureusement pas, hiberner a le même comportement – Davide