One of the common issues that I end up debugging is the following exception:
java.lang.IllegalArgumentException: Removing a detached instance
When does this occur?: While removing a record.
Why does this occur?: You are trying to delete a record which is retrieved in another transaction (probably even trying to delete a record that is stored in user HTTP session).
How to fix it?: Make sure you retrieve the record in the same transaction. Sample code for the same:
- public void removeOrganization(Organization org) {
- if (org.getId() != null) {
- org=em.find(Organization.class, org.getId());
- em.remove(org);
- } else {
- // your error logic.
- }
- }
1 comment:
Well, this solution generates one more extra SQL query and bypasses the optimistic locking. So I do not know the "proper" solution, but I do not recommend this one.
Post a Comment