CascadeType.ALL 和“insertable = false,updatable = false”是否相互排除?

Pix*_*ler 3 java hibernate hibernate-mapping spring-data spring-data-jpa

如果我有这样的配置,可以使用吗?

@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "FOREIGN_ID", nullable = false, insertable = false, updatable = false)
ForeignClass foreignClass;
Run Code Online (Sandbox Code Playgroud)

我认为不是,因为级联类型的行为与可插入和可更新参数相冲突。

你怎么认为?

Ken*_*han 6

它们的含义不同,并且彼此不冲突。

因此给出以下映射:

@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;

}
Run Code Online (Sandbox Code Playgroud)
  • cascade意味着当使用EntityManagertopersist()merge()on 时player,JPA 也会自动调用persist()/ merge()on 该玩家的队伍。

  • insertable以及updatable是否允许分配新球队或更新球员的球队。对于DB表来说,就是Player表的team_id列的值是否允许插入或更新。

因此,一个是关于在表中插入/更新记录,而另一个是关于插入/更新表列Team的值,这是完全不同的事情。Playerteam_id