JPA:在保存时忽略字段,但在select上获取

时间:2015-02-12 18:57:42

标签: java hibernate jpa

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

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

1 个答案:

答案 0 :(得分:13)

来自优秀的书 Pro JPA 2

  

JPA定义了将各个映射设置为只读的选项   @Column和@JoinColumn的可插入和可更新元素   注释。这两个设置默认为true,但可以设置为   如果我们想确保提供程序不会插入或更新,则返回false   表中的信息以响应实体的变化   实例。如果映射表中的数据已经存在且我们想要   为了确保它不会在运行时被修改,那么   可插入和可更新元素可以有效地设置为false   阻止提供者做除了阅读之外的任何事情   来自数据库的实体。

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