没有一列的 Hibernate 保存对象
Hibernate Save Object without one column
我有一个名为 test 的 table,它包含 id、name、address 等列。我已经为所有三列创建了 POJO class(User
) 并且已经使用 hbm 配置映射了相同的内容。
我的问题是,如何在会话中保存用户对象时阻止一列 (session.save(User)
)。
假设我不想保存我的地址字段。我该如何预防。 HIbernate 配置中是否有任何属性或需要在 POJO 中添加任何修饰符?
为了避免实体中的字段持久保存在数据库中,可以使用以下两种机制之一:
@Transient - 将字段标记为不可持久化的 JPA 注释
java 中的瞬态关键字。当心 - 使用此关键字将阻止该字段与 java 中的任何序列化机制一起使用。所以,如果字段必须被序列化,你最好只使用 @Transient 注释。
如果您正在使用注释配置,您可以按如下方式进行,
import javax.persistence.Transient;
....
Class User{
@Transient
private String address;
....
如果您正在使用 xml 配置,请避免在 hibernate.cfg.xml
文件中创建到地址 属性 的映射。休眠不保存未映射的属性。
希望对您有所帮助。
将该字段设置为瞬态。
Transient - 如果对象刚刚使用 new 运算符实例化,并且没有与 Hibernate Session 相关联,则该对象是瞬态的。它在数据库中没有永久表示,也没有分配标识符值。如果应用程序不再持有引用,则 Transient 实例将被垃圾收集器销毁。使用 Hibernate Session 使对象持久化(并让 Hibernate 处理需要为此转换执行的 SQL 语句)。
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html
我有一个名为 test 的 table,它包含 id、name、address 等列。我已经为所有三列创建了 POJO class(User
) 并且已经使用 hbm 配置映射了相同的内容。
我的问题是,如何在会话中保存用户对象时阻止一列 (session.save(User)
)。
假设我不想保存我的地址字段。我该如何预防。 HIbernate 配置中是否有任何属性或需要在 POJO 中添加任何修饰符?
为了避免实体中的字段持久保存在数据库中,可以使用以下两种机制之一:
@Transient - 将字段标记为不可持久化的 JPA 注释
java 中的瞬态关键字。当心 - 使用此关键字将阻止该字段与 java 中的任何序列化机制一起使用。所以,如果字段必须被序列化,你最好只使用 @Transient 注释。
如果您正在使用注释配置,您可以按如下方式进行,
import javax.persistence.Transient; .... Class User{ @Transient private String address; ....
如果您正在使用 xml 配置,请避免在
hibernate.cfg.xml
文件中创建到地址 属性 的映射。休眠不保存未映射的属性。
希望对您有所帮助。
将该字段设置为瞬态。
Transient - 如果对象刚刚使用 new 运算符实例化,并且没有与 Hibernate Session 相关联,则该对象是瞬态的。它在数据库中没有永久表示,也没有分配标识符值。如果应用程序不再持有引用,则 Transient 实例将被垃圾收集器销毁。使用 Hibernate Session 使对象持久化(并让 Hibernate 处理需要为此转换执行的 SQL 语句)。
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html