IntelliJ open source
[Logo] JavaRanch » JavaRanch Saloon
  Search | FAQ | Recent Topics | Hot Topics
Register / Login


Win a copy of JBoss AS 5 Development this week in the JBoss forum
or Spring Dynamic Modules in Action in the Spring forum!
Reply Bookmark it! Watch this topic JavaRanch » Forums » Java » Object Relational Mapping
 
RSS feed
 
New topic
Author

Problem with all-delete-orphan

super sonic
Greenhorn

Joined: Jun 19, 2009
Messages: 2

should all-delete-orphan work for both unidirectional and bidirectional (one2many association) ? is there any rule for this ..

I am trying to delete a child element using all-delete-orphan.... but getting following exception.. .


INFO: Checking 0 named queries
Hibernate: select dept0_.id as id0_, dept0_.name as name1_0_ from dept dept0_ where dept0_.id=?
Hibernate: select emp0_.deptid as deptid__, emp0_.id as id__, emp0_.id as id0_, emp0_.name as name0_0_, emp0_.deptid as deptid0_0_ from emp emp0_ where emp0_.deptid=?
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
at java.util.HashMap$KeyIterator.next(Unknown Source)
at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:357)
at Test.removeUser(Test.java:55)
at Test.main(Test.java:66)

Below is my code :

<hibernate-mapping>
<class name="Employee" table="emp">
<id name="empId" column="id">
<generator class="native"/>
</id>
<property name="empName" column="name"/>
<many-to-one name="deptid" column="deptid"/>
</class>
</hibernate-mapping>

<hibernate-mapping>
<class name="Dept" table="dept">
<id name="deptId" column="id">
<generator class="native"/>
</id>
<property name="deptName" column="name"/>

<set name="emp" cascade="all-delete-orphan">
<key column="deptid"/>
<one-to-many class="Employee"/>
</set>

</class>
</hibernate-mapping>

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Dept dept=(Dept)session.load(Dept.class,new Integer(1));
Iterator<Employee> emps=((Set)dept.getEmp()).iterator();
while(emps.hasNext()){
Employee emp=emps.next();
if(emp.getEmpName().equals("user")){
dept.getEmp().remove(emp);
}
}
tx.commit();
session.close();
Cameron Wallace McKenzie
author and cow tipper
Bartender

Joined: Aug 26, 2006
Messages: 4517

select emp0_.deptid as deptid__, emp0_.id as id__, emp0_.id as id0_, emp0_.name as name0_0_, emp0_.deptid as deptid0_0_ from emp emp0_ where emp0_.deptid=?


Throw that code right into you SQL tool and send it directly to the database with a valid deptid and see what happens. I want to see that the error isn't at the database level, and is in fact, a problem with the Hibernate mapping. Is that possible? Which database are you using?

-Cameron McKenzie

Author of Hibernate Made Easy, What is WebSphere???, Portlet Programming Made Easy and the SCJA Certification Guides
My Hibernate and JPA Tutorials * My Mock Java Certification Exams * My Online Java Tutorials * My CBT Portlet Tutorials.

Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Messages: 14714

"super sonic"

Please click on the My Profile link above and change your display name to meet the JavaRanch Naming Policy of using your real first and real last names.

Thanks

Mark

Spock's Beard - Foabia app - Money Mgt Calculator - Paper Clips
How to Ask Questions the Smart Way FAQ
Mark Spritzler
ranger
Sheriff

Joined: Feb 05, 2001
Messages: 14714

"ConcurrentModificationException "

Doesn't that occur when you have updated an object and before that update has been commited you try and delete that object?

Mark

Spock's Beard - Foabia app - Money Mgt Calculator - Paper Clips
How to Ask Questions the Smart Way FAQ
 
 
 
Reply Bookmark it! Watch this topic JavaRanch » Forums » Java » Object Relational Mapping
 
RSS feed
 
New topic
replay challenge