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

发布于 2024-12-10 07:41:10 字数 196 浏览 0 评论 0原文

其实问题就在标题里。

这些实体将映射系统中不同对象的评论(博客节点、评论等) 所以我希望能够使用此专栏(读取它为特定类型的注释对象类型构建注释树的值。 另外,我想在 equalshashcode 方法中添加 @DiscriminatorColumn
最好的方法是什么?

Actually the Question is in the title.

The entities will be map Comments for different objects in system(Blog nodes, comments, etc.)
so I want to be able work with this column(read it's value for building comment tree for particular type of Commented object type.
Also I want to add @DiscriminatorColumn in the equals and hashcode methods.
What is the best way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

白昼 2024-12-17 07:41:10

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

  1. 一种是每当您使用鉴别器时,您都有某些子类,然后在子类的基础上您可以将其等同两个物体。
  2. 您可以在实体中添加一种临时变量,然后在映射时可以 insert="false" update="false" 到该属性,这将使您的属性只读,然后对于该属性,您可以放置​​等于。

例如:-

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

This problem comes as whenever you load the entity, the discriminator value is always null. So if you try to add the discriminator value in equals you might get null pointer, So to do so there are two ways:-

  1. One is whenever you use discriminator, you have certain sub classes, then on the basis of sub classes you can equate two objects.
  2. You can add a sort of temporary variable in your entity, and then while mapping you can insert="false" update="false" on to that attribute, which will make your attribute read only, and then for that attribute you can put the equals.

eg:-

private String tempDiscriminatorValue;
<property name="tempDiscriminatorValue" type="string" column="DISCR_VAL" insert="false" update="false"/>
_蜘蛛 2024-12-17 07:41:10

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

equals() 通常会执行,

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

DiscriminatorColumns are for inheritance, an instance of class A is implicitly not equal to a class B, so I do not understand why you would do this??

equals() would normally do a,

if (object instanceof Foo) {
  return ...
} else {
  return false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文