Tha*_*ham 132 java jpa eclipselink java-ee
如果某个字段有注释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;
}
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 109
当创建/更新相关实体的责任不在当前实体中时,您就会这样做.例如,你有一个Person和一个Address.您希望添加与实体中的实体insertable=false, updatable=false的@OneToMany关系,仅仅因为创建或更新实体不是实体的责任.反过来说.PersonAddressAddressPerson
Mag*_*lex 20
我想补充一下BalusC和Pascal Thivent的另一个常见用法insertable=false, updatable=false:
考虑一个不是id而是某种序列号的列.计算序列号的责任可能不一定属于申请.
例如,序列号从1000开始,每个新实体应递增1.这在数据库中很容易完成,非常恰当,在这种情况下,这些配置是有意义的.
另一个示例是在"created_on"列上,您希望让数据库处理日期创建
小智 6
我想这句话的意思很简单:
boolean insertable(可选)该列是否包含在持久性提供程序生成的 SQL INSERT 语句中。
boolean updatable(可选)该列是否包含在持久性提供程序生成的 SQL UPDATE 语句中。
参考: https: //www.objectdb.com/api/java/jpa/Column
| 归档时间: |
|
| 查看次数: |
119145 次 |
| 最近记录: |