@Transient - 为什么数据被保存在数据库中?

@Transient - Why data is getting saved in Database?

我有一个用@Transient 注释的实体变量,如下所示。这意味着它不应该存储在数据库中。

@Transient
private String passwordConfirm;

但是当我转到 H2-Console 时,我可以看到数据保存在那里。

为什么会这样?以及如何避免它?

您可能正在使用 @org.springframework.data.annotation.Transient

改为正确导入:@javax.persistence.Transient

这样就可以了。

@javax.persistence.Transient 由持久性提供程序使用(例如:Hibernate)。持久性提供程序查找 JPA 规范注释。 @org.springframework.data.annotation.Transient 不是 JPA 规范的一部分,因此持久性提供程序会忽略它。

当 Spring 数据是实际的 ORM 时,将使用 @org.springframework.data.annotation.Transient。一些示例是 Spring Data Elasticsearch 和 Spring Data MongoDB。这些 Spring 数据实现使用 @org.springframework.data.annotation.Transient 就像 Hibernate 使用 @javax.persistence.Transient - 不将标记的字段映射到数据库中。