java - CascadeType.ALL 和 "insertable = false, updatable = false"是否相互排除?

标签 java hibernate spring-data-jpa spring-data hibernate-mapping

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

@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 表示当使用 EntityManagerpersist()merge()玩家,JPA也会自动对该玩家的团队调用persist()/merge()

  • insertableupdatable 是关于是否允许分配新团队或为玩家更新团队。对于DB表来说,就是关于Player表的team_id列的值是否允许插入或更新。

因此,一个是关于在 Team 表中插入/更新记录,另一个是关于插入/更新 Player 表的 team_id 列,这是完全不同的东西。

关于java - CascadeType.ALL 和 "insertable = false, updatable = false"是否相互排除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58996129/

相关文章:

java - 通过 JDBC 语句执行 DDL 时出现 hibernate 错误

java - JPanel 中使用 Miglayout 的多个 JTable

java - 如何使用 eclipse Juno 将 war 文件部署到 tomcat 6

java - 如何强制多个 hbm2ddl 执行单独运行?

java - 值 '0000-00-00' 不能表示为 java.sql.Date

java - spring data jpa 不必要的左连接

java - 无法计算表达式方法抛出 'org.hibernate.exception.GenericJDBCException' 异常

spring - 使用 Spring CrudRepository 进行不区分大小写的查询

java - 模拟函数指针

c# - Java 和 C# 的并行开发