Hibernate在多个类层次结构上搜索

时间:2017-10-04 13:34:27

标签: hibernate hibernate-search

让我们提供课堂示例:

抽象类SuperParent {   superParentField1; }

抽象类Parent扩展SuperParent {   parentField1; }

class ImplementaingClass1 extends Parent {   //我只想索引parentField1 }

类ImplementingClass2扩展Parent {   //我只想索引superParentField1 }

与这些不同。

在hibernate-search中处理此问题的最佳方法是什么?所以我可以在任何给定的类中搜索任何字段。我是否需要覆盖实现类的字段并在那里添加注释?没有别的办法吗?

1 个答案:

答案 0 :(得分:2)

覆盖getter并在重写的getter上添加@Field注释:

abstract class SuperParent { superParentField1; }

abstract class Parent extends SuperParent { parentField1; }

@Indexed
class ImplementingClass1 extends Parent {
  @Override
  @Field(... stuff ...)
  SomeType getParentField1() {
    return super.getParentField1();
  }
}

@Indexed
class ImplementingClass2 extends Parent {
  @Override
  @Field(... stuff ...)
  SomeType getSuperParentField1() {
    return super.getSuperParentField1();
  }
}

或者,使用programmatic mapping。如果你有多个具有这种约束的字段,这将特别相关。