【问题标题】:Hibernate - automatically delete children when updating parentHibernate - 更新父级时自动删除子级
【发布时间】:2014-08-06 12:49:23
【问题描述】:

我有两张桌子。 Site有很多Sectors。

当我尝试编辑站点的扇区列表时,例如我最初有 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=?

【问题讨论】:

  • 据我了解,一旦您更新站点对象,它应该从扇区表中删除该条目。只需确保站点对象内的列表现在只有 2 个元素而不是 3 个。
  • 列表包含两个元素,然后我更新站点。当我回去检查时,这3个元素又出现了。
  • mappedBy = "sitio" 可能是个问题...我认为它应该是 mappedBy = "site"
  • 是翻译的问题,我更正了。当我更改某些扇区的值时会更新,但是当我从列表中删除一个项目然后更新站点时,仍然列为他的孩子。
  • FetchType.EAGER 有时是一个问题,这里也遇到forum.hibernate.org/viewtopic.php?f=9&t=1004627

标签: java hibernate spring-mvc jpa


【解决方案1】:

我不知道你是否得到它,但也许@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;

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 2013-02-19
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多