2014-12-03 74 views
0

我有一个A类,它是由一个子类B扩展。 什么是最好的方式来使B继承的属性之一,而不是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;} 
} 
+0

也许http://stackoverflow.com/questions/13052717/hibernate-override-transient – 2014-12-03 16:52:53

回答

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中使用声明。