没有一列的 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