首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Hibernate多个到同一个实体之一。如何删除?

Hibernate多个到同一个实体之一。如何删除?
EN

Stack Overflow用户
提问于 2018-08-06 06:17:22
回答 1查看 0关注 0票数 0

我把Type类作为实体。类型可以有一个父类型和多个子类型。

@Entity
@Table(name = "type")
public class Type extends EntityItem {

...
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_type", referencedColumnName = "id")
    private Type parentType;

    @OneToMany(mappedBy = "parent_type")
    private List<Type> childTypes = new ArrayList<>();
...
}

当我用子类创建父类型并保存它们时,一切都没问题。但是,当我试图删除父文件时,下面有一个错误

2018-08-05 15:58:50,843 INFO  [main] impl.TypeServiceImpl (TypeServiceImpl.java:53) - Type delete: Type [id=1000, parentType=null]
Hibernate: 
    delete 
    from
        type 
    where
        id=?
Aug 05, 2018 3:58:50 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 0, SQLState: 23503
Aug 05, 2018 3:58:50 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ERROR: update or delete on table "type" violates foreign key constraint "fk_gbqg39jytwquch0bjm9j80gsf" on table "type"
  Подробности: Key (id)=(1000) is still referenced from table "type".

你能解释一下是怎么回事吗?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-08-06 15:40:46

需要使用在@OneToMany上的cascade = CascadeType.REMOVE

试试这个:

@OneToMany(mappedBy = "parent_type",cascade = CascadeType.REMOVE)
private List<Type> childTypes = new ArrayList<>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档