没有一列的Hibernate Save Object

时间:2015-12-05 15:02:07

标签: hibernate pojo hbm

我有一个名为test的表,它有像id,name,address这样的列。我为所有三列创建了POJO类(User),并且已经使用hbm配置进行了映射。

我的问题是,如何在会话中保存User对象时阻止一列(session.save(User))。

假设我不想保存我的地址字段。我该怎么防止。 HIbernate配置中是否有任何属性或者需要在POJO中添加任何修饰符?

3 个答案:

答案 0 :(得分:0)

为了避免实体中的字段被保留在DB中,可以使用以下两种机制之一:

@Transient - 将字段标记为不可持久的JPA注释

java中的transient关键字。注意 - 使用此关键字,将阻止该字段与java中的任何序列化机制一起使用。因此,如果必须对字段进行序列化,则最好只使用@Transient注释。

答案 1 :(得分:0)

  • If you're using annotations config you could could do as follows,

    import javax.persistence.Transient;
     ....
    Class User{
      @Transient
      private String address;
      ....
    
  • If you're using xml configuration just avoid creating a mapping to address propery in the hibernate.cfg.xml file. Unmapped properties are not saved by hibernate.

Hope this helps.

答案 2 :(得分:0)

将该字段设为Transient。

瞬态 - 如果一个对象刚刚使用new运算符进行实例化,并且它与Hibernate会话无关,则该对象是瞬态的。它在数据库中没有持久表示,并且没有分配标识符值。如果应用程序不再持有引用,则垃圾收集器将销毁瞬态实例。使用Hibernate Session使对象持久化(让Hibernate处理需要为此转换执行的SQL语句)。

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html