假设我有以下数据模型:
public class A {
@Indexed(indexType = IndexType.FULLTEXT, indexName = "property1")
String property1;
}
public class B extends A {
@Indexed(indexType = IndexType.FULLTEXT, indexName = "property2")
String property2;
}
我可以告诉Spring框架在不同的索引名称下索引B类的property1
吗?
如果没有,在这种情况下你会怎么做?我的意思是,如果你有几个类都扩展了相同的基类,你会怎么做,但同时,这些类继承的所有属性都应该被编入索引。我可以仅在基类中注释这些属性以进行索引,这是非常有限的。我该怎么办?
感谢。
答案 0 :(得分:2)
索引定义注释中的level
属性可以设置为Level.INSTANCE
。如需更多帮助,请参阅 spring-data-neo4j 文档here
以下是文档的摘录:
如果在超类中声明了一个字段,但是为其指定了不同的索引 需要子类,level属性声明将使用的内容 作为索引。 Level.CLASS使用声明字段的类 Level.INSTANCE使用提供的类或实际实体 实例
答案 1 :(得分:0)
我认为这不可行。您的property1
将始终在索引property1
中编入索引。能够在单个字段上指定多个索引可能会解决您的问题,但目前无法实现。不久前,我为此提出了an issue,但尚未实施。
如果您真的想要域(实体)对象方法,您也可以选择domain entity approach。它与Spring或Spring Data Neo4j无关,但它也可以解决问题。通过这种方式手动处理实体,您还可以自己管理索引,从而获得所需的所有灵活性。
只是一个问题,为什么要为每个子类指定不同的索引?