2016-03-29 27 views
7

OpenJPA 2.3.x için silme sırası yanlış sırada gerçekleşiyor ve nedenini anlayamıyorum.OpenJPA Ebeveyn silme işlemi sırasında çocuğun silinmesi için yanlış ayar

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] 

çocuk hala zaman var çünkü bu bir yabancı anahtar kısıtlaması hataya neden null günlük dosyasında SQL ifadelerinin büyükbaba içinde unapprovedMotor ayar

// 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 
@Entity 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
@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 { 

al bu JPA eşleştirmeleri

Verilen

Ebeveyn silme deyimi yürütülür.

cevap

0

OpenJPA'yı hiç kullanmamıştım ama bana öyle geliyor ki sorun kontrol edilebilir.