2014-12-03 77 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中使用聲明。