Bonjour à tous,
Tout est dans le titre.
Je sais que je ne suis pas la première personne à qui ça arrive, mais là je bloque
malgré mes recherches...
Alors voilà, j'ai une classe DocumentLibrary qui possède une collection de Document.
Lorsque je modifie un document de la collection et que je mets à jour DocumentLibrary, ça fonctionne.
Lorsque j'ajoute un nouveau document dans la collection et que je mets à jour DocumentLibrary, ça fonctionne.
Lorsque je supprime un document de la collection et que je mets à jour DocumentLibrary, là ça ne fonctionne pas.
Je voudrais que lorsque l'on supprime un Document de DocumentLibrary, la suppression soit répercutée lors de la mise à jour de DocumentLibrary.
J'ai indiqué "orphanRemoval=true" mais cela ne fonctionne pas.
Qu'ais-je oublié ?
Voici ma classe DocumentLibrary (qui possède la collection) :Voici ma classe test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 @Entity @Table(name="library") public class DocumentLibrary { @Id @Column(name="id") private int id = 0; @Column(name="nb_documents") private int numberOfDocuments = 0; @OneToMany(mappedBy="library", fetch=FetchType.LAZY, cascade=CascadeType.ALL, orphanRemoval=true) private Set<AbstractDocument> documents; //... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public class test { public static void main(String[] args) throws Exception { ApplicationContext appCtx = new ClassPathXmlApplicationContext("META-INF/spring/applicationContext-bean.xml"); DocumentLibraryImpl librarySvc = (DocumentLibraryImpl) appCtx.getBean("documentLibraryService"); // Chargement de la bibliothèque DocumentLibrary library = librarySvc.loadDocumentLibraryByProject(1); // Chargement des documents librarySvc.loadAllDocuments(library); // Suppression des documents for (AbstractDocument doc : library.getDocuments()) { library.removeDocument(doc); } // Mise à jour de la bibliothèque librarySvc.saveDocumentLibrary(library); } }
Partager