java - 使用 JPA 进行更新时如何排除实体字段

标签 java database hibernate jpa hibernate-mapping

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

我这样试过

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

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

有办法吗?

谢谢!

最佳答案

您需要将@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 属性是在这种情况下是多余的)。

关于java - 使用 JPA 进行更新时如何排除实体字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28363625/

相关文章:

java - MySQL 的 Hibernate 类中出现未知实体错误

mysql - 在 spring hibernate 中使用 OneToOne 关系防止在父表中插入空值

.net - CouchDB - .NET 或 Mono 等效技术

java - 新的 Spring 项目构建失败

java - while循环 'ignores'输入?

java - 当到达 GridView 末尾时无限调用 "onScroll"

database - Elasticsearch 通过 "Partial Term"而不是 "Entire Term"进行聚合

mysql - 在MySQL数据库中添加约束保证唯一性

java - Hibernate 将时间戳中的时间映射为时间 00 :00:00

java - 捕获 SocketTimeOut 错误并响应