Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] remove childs in one-to-many

Hello Markus,

EclipseLink orders deletes last, allowing updates to occur first so that users can clean up any unmapped constraints with updates. This behavior can be changed by calling setShouldPerformDeletesFirst(true) on UnitOfWork, which is accessible through the EntityManager: UnitOfWork uow = (UnitOfWork)( (JpaEntityManager)em.getDelegate() ).getActiveSession( em ); uow.setShouldPerformDeletesFirst(true);

If the foreign key field has a non-nullable constraint, it should not be set to null in the object model. Garbage collection should not be hindered by keeping the emp->Department reference; as long as nothing is referencing employee, it should be available for garbage collections.
Similar question and answer are posted here:
http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg04021.html

Best Regards,
Chris

Hahn, Markus wrote:

Hi folks,

we encounter a problem with EL. We migrate from Kodo where different things worked which do not in EL.

- In a one-to-many relation i want to remove a child from the collection in the parent:

-       Department dept = em.find(Department.class, 30);

-       Employee emp = dept.getEmployees.getFirst();

-       dept.getEmployees().remove(emp);

-       emp.setDepartment(null);

After some further steps in the transaction there is a flush, and EL tries to update emp, to set the department foreign key to null, which causes a foreign key constraint violation.

This looks like an error because this behaviour does not occur at all relations with the same mapping.

We think that the code is correct in the sense that the OR-Mapper has to respect the need to remove the relation on the Java object in order to be enabled to be garbage collected.

Mapping from the parent side is configured with private-owned and cascade-all.

Mapping back from the child to the parent is configured with cascade-merge, cascade-persist

We use EL 1.2

Any ideas or hints would be appreciated.

Regards, Markus

------------------------------------------------------------------------

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


Back to the top