【问题标题】:How to exclude an entity field when doing an update with JPA使用 JPA 进行更新时如何排除实体字段
【发布时间】:2015-04-06 11:14:55
【问题描述】:

有没有办法使字段在更新操作时不持久,但在使用 JPA - Hibernate 4 的创建操作时持久?

我是这样试的

@Transient
@Id
@Column(name = "USER_NAME", nullable = false, length = 75)
private String userName;

但是使用 @Transient 注释,该字段将在所有 CRUD 操作中是瞬态的,我想要一种方法来指定只有在此操作上是持久的(创建)。

有没有办法做到这一点?

谢谢!

【问题讨论】:

  • 也许您正在寻找@Column(name = "USER_NAME", nullable = false, length = 75, updatable=false)

标签: java database hibernate jpa hibernate-mapping


【解决方案1】:

需要将@Column注解的updatable属性设置为false

@Column(name = "USER_NAME", nullable = false, length = 75, updatable= false)
private String userName;

updatable 属性指示 Hibernate 从生成的UPDATE SQL 语句中省略此列。

我删除了@Transient@Id 注释。

如果此列是您的 PK(映射到实体标识符),那么您只能在 INSERT 期间设置它,因为 Hibernate 不允许您更新实体标识符(在这种情况下,updatable 属性是多余的) .

【讨论】:

  • 这里的length属性有什么用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多