2017-12-18 197 views
0

我想從中間連接表中刪除數據。我越來越刪除連接表的行級聯休眠

更新或刪除表「eoclass」違反了表「eostaff_user_eoclass」 細節外鍵約束「fk_o5mbi65xmqv60x0m5v0l1raf8」:密鑰(primary_key)=(51)仍然從表「eostaff_user_eoclass」引用。

這裏是我的實體

@Entity 
@Table(name = "EOSTAFF_USER") 
@SequenceGenerator(name = "EOSTAFF_USER_SEQ", initialValue = 1, allocationSize = 1, sequenceName = "EOSTAFF_USER_SEQ") 
public class EOStaffUser extends EOObject { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EOSTAFF_USER_SEQ") 
    @Column(name = "PRIMARY_KEY") 
    public long primaryKey; 

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) 
    public List<EOClass> eoClassArray = new LinkedList<>(); 
} 

@Entity 
@Table(name = "EOCLASS", uniqueConstraints = @UniqueConstraint(columnNames = { "eoinstitute_primary_key", 
    "lkclass_primary_key", "lksection_primary_key", "lksubject_primary_key" })) 

@SequenceGenerator(name = "EOCLASS_SEQ", initialValue = 1, allocationSize = 1, sequenceName = "EOCLASS_SEQ") 

public class EOClass extends EOObject { 

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "EOCLASS_SEQ") 
    @Column(name = "PRIMARY_KEY") 
    public long primaryKey; 
} 
+1

請首先在數據庫級別檢查通常的嫌疑人。刪除有關記錄/實體是否可以留下任何兒童記錄?將這些東西從清單中刪除,然後再擔心Hibernate。 –

回答

0

你不能簡單地刪除EOClass因爲Hibernate不會刪除連接表的記錄。

對於您的映射,您需要加載EOStaffUser,從eoClassArray刪除EOclass併合並整個EOStaffUser實體。