This sounds like it is related to this issue https://issues.apache.org/jira/browse/OPENJPA-2211
John > -----Original Message----- > From: tvogel [mailto:tvo...@msn.com] > Sent: Mittwoch, 30. März 2016 19:33 > To: users@openjpa.apache.org > Subject: Wrong order for delete of child when deleting parent > > The order of deletes for OpenJPA 2.3.x are happening in the wrong order > and I can't figure out why. > > Given these JPA mappings > > // grandparent > @Entity > @Table(name = "three_phase_motor_input") > public class ThreePhaseMotorInput implements > IThreePhaseMotorInput, Serializable { > @Id > @GeneratedValue(strategy = GenerationType.IDENTITY) > private Long id; > @Version > private Integer version; > > @OneToOne(orphanRemoval = true, cascade = > CascadeType.ALL, optional = true, targetEntity = > UnapprovedThreePhaseMotor.class) > @JoinColumn(name = "unapproved_id") > private IThreePhaseMotor unapprovedMotor; > > // parent > @Entity > @Table(name = "unapproved_three_phase_motor") > public class UnapprovedThreePhaseMotor extends > ThreePhaseMotor { > @OneToMany(orphanRemoval = true, cascade = > CascadeType.ALL, fetch = FetchType.LAZY, targetEntity = > UnapprovedThreePhaseWire.class) > @JoinColumn(name = "motor_id", referencedColumnName > = "id", nullable = > false) > @OrderColumn(name = "idx") > private List<IThreePhaseWire> wires; > > > // child - Abstract > @MappedSuperclass > @Access(AccessType.FIELD) > public abstract class ThreePhaseWire implements IThreePhaseWire, > Serializable { > @Id > @GeneratedValue(strategy = GenerationType.IDENTITY) > private Long id; > > // child concrete > @Entity > @Table(name = "unapproved_three_phase_wire") > public class UnapprovedThreePhaseWire extends ThreePhaseWire { > > > Order of SQL statements in log file when setting unapprovedMotor in > grandparent to null > > 572353115 UPDATE three_phase_motor_input SET status = ?, > version = ?, approved_id = ?, unapproved_id = ? WHERE id = ? AND version = > ? > [params=(int) 1, (int) 8, (null) null, (null) null, (long) 896, (int) 7] > 1683522521 DELETE FROM unapproved_three_phase_motor WHERE > id = ? AND version = ? [params=(long) 209938, (int) 1] > 446470297 DELETE FROM unapproved_three_phase_wire WHERE id > = ? > [params=(long) 1394] > > This causes a foreign key constraint error since the child still exists when > the > parent delete statement is executed. > > > > > -- > View this message in context: http://openjpa.208410.n2.nabble.com/Wrong- > order-for-delete-of-child-when-deleting-parent-tp7589053.html > Sent from the OpenJPA Users mailing list archive at Nabble.com.