如果一个字段被注释为insertable=false, updatable=false,这不是意味着您不能插入值或更改现有值吗?你为什么要这么做呢?
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToMany(mappedBy="person", cascade=CascadeType.ALL)
private List<Address> addresses;
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
@JoinColumn(name="ADDRESS_FK")
@Column(insertable=false, updatable=false)
private Person person;
}发布于 2010-09-28 00:10:45
当创建/更新被引用列的responsibility不在当前实体中,而在另一个实体中时,可以这样做。
发布于 2010-09-28 03:51:41
当您需要在一个实体中多次映射一个字段时,定义insertable=false, updatable=false非常有用,通常是:
使用复合密钥时使用
时使用复合密钥
这不是一个语义上的东西,但绝对是一个技术上的东西。
发布于 2013-04-23 17:03:14
对于BalusC和Pascal Thivent的回答,我想补充一下insertable=false, updatable=false的另一种常见用法
考虑一列,它不是id,而是某种类型的序列号。计算序列号的责任可能不一定属于应用程序。
例如,序列号从1000开始,每个新实体都应递增1。在数据库中很容易做到这一点,而且非常恰当,在这种情况下,这些配置是有意义的。
https://stackoverflow.com/questions/3805584
复制相似问题