【发布时间】: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