jQuery in Action, 3rd edition
The moose likes Object Relational Mapping and the fly likes detached entity passed to persist Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "detached entity passed to persist" Watch "detached entity passed to persist" New topic

detached entity passed to persist

Gokcen Guner

Joined: May 23, 2009
Posts: 9
I have 3 entities user, patient and doctor. Every doctor or patient is a user. I don't use inheritance strategy because I couldn't get an answer from my question here: Previous Problem

Now I'm trying to achieve a similar point without inheritance. Schema is like that:
User <--- OneToOne --> Doctor
User <--- OneToOne --> Patient
Patient <--- ManyToMany --> Doctor

My entities:



I've written junit tests for these entities. The doctor methods are working but patients' not.
This one creates 3 users(2 for patients 1 for doctor), 2 patients and a doctor.

But that one doesn't work as I expect:


The for loop inside testCreatePatient executes up to unitNumber. When i becomes unitNumber + 1 (I mean 21), I'm getting detached entity passed to persist: tr.com.stigma.db.entity.User. It creates 20 doctors, 20 patients and 40 users until i gets to 20. At the 21st insert, I try to add a new patient to an existing doctor, consequently to an existing user. How can I do this?

Stack trace is here:
Gokcen Guner

Joined: May 23, 2009
Posts: 9
Although nobody replied, I solved it.
I changed @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE }) to @ManyToMany(cascade = { CascadeType.ALL })

I agree. Here's the link: http://aspose.com/file-tools
subject: detached entity passed to persist
It's not a secret anymore!