如何删除与java地图列表关联的实体

时间:2015-10-13 08:08:39

标签: java hibernate entity

我有一个实体,其中包含带有子枚举的地图列表。当我想删除这个实体时,我有

  

无法删除或更新父行:外键约束失败(kobalt.category_categoryitem,

错误,我使用hibernate。有没有人可以解决这个问题?

@Entity
public class Product implements BaseEntity {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    private int id;
    private int kobilId;
    private String code;
    @Column(unique = true)
    private long barcode;
    private String productName;
    @Column
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @Fetch(value = FetchMode.SUBSELECT)
    @Cascade(org.hibernate.annotations.CascadeType.DELETE)
    private Map<Category, CategoryItem> itemList;

1 个答案:

答案 0 :(得分:0)

在您的情况下看起来关系结构不正确。当您尝试删除外键对应的值时,它无法删除主键对应的值。在级联规则关系应该像删除主键对应属性时那样它应该删除所有外键对应的属性。但反之亦然。这是你的情况我认为所以试着纠正你的关系。例如,考虑员工具有地址数组的“员工 - 地址”关系。所以关系应该像删除员工时一样,所有相应的地址都应该消失。但另一方面,如果关系不正确并且您尝试删除地址,则无法删除员工,因此您将获得例如您的例外情况。