如果我有这样的配置,可以使用吗?
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "FOREIGN_ID", nullable = false, insertable = false, updatable = false)
ForeignClass foreignClass;
我认为不是,因为级联类型的行为与可插入和可更新参数相冲突。
你觉得怎么样?
最佳答案
它们的含义不同,并且彼此不冲突。
因此给出以下映射:
@Entity
@Table(name="player")
public class Player {
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "team_id", nullable = false, insertable = false, updatable = false)
Team team;
}
cascade
表示当使用EntityManager
来persist()
或merge()
时玩家
,JPA也会自动对该玩家的团队调用persist()
/merge()
。insertable
和updatable
是关于是否允许分配新团队或为玩家更新团队。对于DB表来说,就是关于Player
表的team_id
列的值是否允许插入或更新。
因此,一个是关于在 Team
表中插入/更新记录,另一个是关于插入/更新 Player
表的 team_id
列,这是完全不同的东西。
关于java - CascadeType.ALL 和 "insertable = false, updatable = false"是否相互排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996129/