{noformat}When using HQL to DELETE a parent entity, the delete is not cascaded to child entity. Here is a snippet of code that has the issues, detailed test case is below. transaction.begin(); // Use HQL to delete the parent. With CASCADE.ALL, // the child should be deleted. --- DOES NOT DELETE Query query = em.createQuery("DELETE FROM ParentEntity WHERE id = :parentId"); query.setParameter("parentId", parentId); query.executeUpdate(); transaction.commit();
But this piece of code cascades and deletes the child entity. // Delete using EM -- -- WORKS FINE! int parentId = parentEntity1.getId(); transaction.begin(); ParentEntity retrievedParent = em.find(ParentEntity.class, parentId); em.remove(retrievedParent); transaction.commit();
-- Database tables.
create table TEST.TEST_PARENT_TABLE ( ID INTEGER not null primary key, NAME VARCHAR(256) ); create table TEST.TEST_CHILD_TABLE ( ID INTEGER not null primary key, NAME VARCHAR(256) );{noformat} |
|