JPA:保存时忽略字段,但选择时获取

2022-09-03 05:06:29

我正在使用Hibernate作为我的JPA提供程序,并且我希望在调用时忽略实体中的一个字段。但是,我在相应的数据库表中确实有一个匹配列,并且我希望在获取实体时用数据库值填充我的实体字段。因此,我希望在保存实体时忽略该字段,但在获取实体时不要忽略该字段。save()

如果我使用 ,则该字段将被完全忽略,这不是我想要的。有什么办法可以做到这一点吗?@Transient


答案 1

来自优秀的书Pro JPA 2

JPA 定义了使用@Column的可插入和可更新元素将各个映射设置为只读的选项,并@JoinColumn注释。这两个设置默认为 true,但如果我们希望确保提供程序不会在表中插入或更新信息以响应实体实例中的更改,则可以将其设置为 false。如果映射表中的数据已经存在,并且我们希望确保它不会在运行时被修改,则可以将可插入和可更新的元素设置为 false,从而有效地防止提供程序执行除从数据库读取实体之外的任何内容。

@Column(insertable = false, updatable = false)
private String readOnlyField;

答案 2

推荐