I have an exception from the bellow line of code:
def order = new PostOrder(pOrder: "post", posts: status, children: lookupPerson().children)
the lookupPerson().children gives a set of 2 Child instances with different id’s
The full exception is:
org.hibernate.HibernateException: Found shared references to a collection: com.fyp.timeline.PostOrder.children
at com.fyp.timeline.ProfileController$$ENwi3LDE.updateStatus(ProfileController.groovy:134)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
I am really stuck on this. Mainly because it did used to work and randomly stopped. I have added a new user to MySql and a new database but that should not effect this one.
You’re passing
lookupPerson().childrento the constructor of thePostOrder– I’m assuming that this is a collection in thePersonclass mapped withstatic hasMany = [ ... ]. So Hibernate is telling you what’s happening – you’re using the same collection twice. It makes sense to me that there should only be one owner of a mapped collection. Keep in mind that these aren’t regularArrayLists orHashSets – they’re HibernatePersistentLists andPersistentSets which implement the correct interfaces but are Hibernate-specific.If you want to pass the collection items to the new
PostOrder, you can copy them into a new collection, e.g.However since this is likely also a mapped collection, you should be using
addToChildren, e.g.