对于其字段不能修改,但可以重新分配给新实例的hibernate实体属性,我应该使用什么级联类型?
示例
@ManyToOne(cascade = { CascadeType.REFRESH })
@JoinColumn(name = "ADDRESS_ID", nullable = true)
private Address address;我们可以为当前对象分配一个新地址,但不能修改现有地址的字段,因为这些地址在数据库中应该是不可变的。我们应该能够与实体一起创建新地址,但不能删除它们。我们应该使用什么CascadeType?
发布于 2021-10-19 12:39:40
CascadeType指的是应该级联到属性对象的操作。如果调用EntityManager.persist,它将使用CascadeType.PERSIST级联到属性,对于EntityManager.merge,它是CascadeType.MERGE;对于EntityManager.remove,它是CascadeType.REMOVE;对于EntityManager.refresh,它是CascadeType.REFRESH;最后,对于EntityManager.detach,它是<代码>D9。
用于保存的级联类型(即持久化/合并)控制是否应在相应操作期间刷新对Address实体所做的更改(可通过该属性访问)。因为您根本不希望这个实例是可变的,所以这些级联类型没有任何意义,而且因为它是不可变的,所以刷新也没有任何意义。
为了保证不发生任何更改,您必须正确地封装实体,例如使用字段访问,而不是公开setter。
https://stackoverflow.com/questions/69538116
复制相似问题