Hibernate - 更新父级时自动删除子级

时间:2014-08-06 12:49:24

标签: java hibernate spring-mvc jpa

我有两张桌子。 Site有很多Sector s。

当我尝试编辑站点的扇区列表时,例如我最初有3个扇区,所以我删除了一个扇区并更新了站点。在数据库中是本网站的三个部门。

更新网站时是否可能会自动删除扇区?或者我必须一对一比较?

感谢。

网站实体

public class Site {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    ....

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "site", cascade = CascadeType.ALL, orphanRemoval = true)    
    private List<Sector> sectores;
}

部门实体

public class Sector {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idGenerator")
    @SequenceGenerator(name="idGenerator", sequenceName="SECTOR_SEQ")
    @Column(name = "IDSECT")
    private Integer id;

    @Column(name = "NOMBRE")
    private String nombre;

    @ManyToOne
    @JoinColumn(name = "IDSITE")
    private Site site;
}

日志

08:17:55,096 INFO  [stdout] (http--0.0.0.0-8080-2) Hibernate: update SITE set SITIO_CODIGO=?, SITIO_NOMBRE=? where ID=?

08:17:55,116 INFO  [stdout] (http--0.0.0.0-8080-2) Hibernate: update SECTOR set NOMBRE=?, IDSITIO=? where IDSECT=?

1 个答案:

答案 0 :(得分:0)

我不知道你是否还有它,但也许@GeneratedValue是一个问题,因为它与网站不同。 @GeneratedValue

但如果不是这样,那么可能会改变

@OneToMany(fetch = FetchType.EAGER, mappedBy = "site", cascade = CascadeType.ALL

@OneToMany(cascade= {CascadeType.ALL }, mappedBy="mcrPosTran")
@LazyCollection(LazyCollectionOption.FALSE)

并改变行业

@ManyToOne
@JoinColumn(name = "IDSITE")
private Site site;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "IDSITE")
private Site site;