如何在实体的equals方法中使用@DiscriminatorColumn?

时间:2011-10-16 06:44:20

标签: java inheritance jpa orm

实际上问题在标题中。

实体将为系统中的不同对象(博客节点,评论等)映射注释 所以我希望能够使用这个列(读取它的值,用于为特定类型的Commented对象类型构建注释树。 另外,我想在@DiscriminatorColumnequals方法中添加hashcode 这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

当您加载实体时,此问题就出现了,鉴别器值始终为null。因此,如果你尝试在equals中添加鉴别器值,你可能会得到空指针,所以有两种方法: -

  1. 一个是每当你使用鉴别器时,你有某些子类,那么在子类的基础上你可以将两个对象等同。
  2. 您可以在实体中添加一种临时变量,然后在映射时可以insert="false" update="false"到该属性,这将使您的属性只读,然后对于该属性,您可以将等号放入。
  3. 例如: -

    private String tempDiscriminatorValue;
    <property name="tempDiscriminatorValue" type="string" column="DISCR_VAL" insert="false" update="false"/>
    

答案 1 :(得分:0)

DiscriminatorColumns用于继承,A类的实例隐含不等于B类,所以我不明白为什么要这样做?

equals()通常会执行a,

if (object instanceof Foo) {
  return ...
} else {
  return false;
}