使子类属性成为瞬态

时间:2014-12-03 16:50:28

标签: java hibernate

我有一个A类,它由一个子类B扩展。 制作B从A瞬态继承并且不为B类持久化的属性的最佳方法是什么?

当使用hbm xml进行配置时,不会以任何方式指示瞬态字段,只是在xml中省略,与使用注释和@Transient注释时不同。

这是一个有效的解决方案,使x瞬态而不是B持久存在吗?

public class A{    
  private Long x;
  private Long y;    

  public Long getX() {return x;}
  public Long getY() {return y;}
}

public class B extends A{    
  private Long z; 
  private transient Long x; 

  public Long getZ() {return z;}
  public Long getX() {return x;}
}

1 个答案:

答案 0 :(得分:1)

如果您使用的是XML配置,则可以利用insert="false"update="false"属性:

<hibernate-mapping>
    <class name="name.of.thepackage.containing.B" table="b">
        <id name="id" type="java.lang.Long">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="z" type="java.lang.Long" />
        <property name="x" type="java.lang.Long" insert="false" update="false" />
    </class>
</hibernate-mapping>

这些属性意味着该字段不会在INSERT中使用,也不会在UPDATE SQL语句中使用。