我有两张桌子。 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=?
答案 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;