From: Davy O. <od...@so...> - 2005-01-06 15:41:10
|
I got a problem with the model File -- Media=20 In the parent File, when adding a subfile named file : File (file) <--> Parent (this) <--> Media (this.media) this.media.add(file); is incorrect. It provokes a = TransientObjectException when inserterd Since it adds File to the Set files, File (file) <--> Media (this.media) when we flush the Media, Hibernate could flush the File before its = Parent. But the File.getParent() is transient (not already flush), and it leads = to a TransientObjectException So it is recommended that only root files are added in the = Media.getFiles() Set. Then getFiles() is not implemented by a HashSet (files should remain = null), but by a hibernate query. Only rootFiles should be a HashSet, and it is through rootFiles that the = media will be flushed. And then recursively, the parents will flush the files. Consequences :=20 - we must store in media only a Set of rootFiles, no all the files. - we should delete media.getFiles() from the bean and only keep = media.getRootFiles(); - If one wants to access to all the files, then we will create a method = Navigation.getAllFiles(media), which execute the right SQL query (fast, = since we have the media id in each file). olive |