我使用Hibernate作为我的JPA提供程序,我希望在调用save()
时忽略实体中的一个字段。但是,我在相应的数据库表中有一个匹配列,我希望在获取实体时使用数据库值填充实体字段。因此,我希望在保存实体时忽略该字段,但在获取时不要忽略该字段。
如果我使用@Transient
,则该字段被完全忽略,这不是我想要的。有没有办法做到这一点?
答案 0 :(得分:13)
来自优秀的书 Pro JPA 2 :
JPA定义了将各个映射设置为只读的选项 @Column和@JoinColumn的可插入和可更新元素 注释。这两个设置默认为true,但可以设置为 如果我们想确保提供程序不会插入或更新,则返回false 表中的信息以响应实体的变化 实例。如果映射表中的数据已经存在且我们想要 为了确保它不会在运行时被修改,那么 可插入和可更新元素可以有效地设置为false 阻止提供者做除了阅读之外的任何事情 来自数据库的实体。
@Column(insertable = false, updatable = false)
private String readOnlyField;