@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
- 不将标记的字段映射到数据库中。
我有一个用@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
- 不将标记的字段映射到数据库中。