我有一个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;}
}
答案 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语句中使用。