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.

Reply via email to