Spring Data Neo4j - 索引和继承

时间:2013-04-30 12:45:14

标签: spring neo4j spring-data-neo4j

假设我有以下数据模型:

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吗? 如果没有,在这种情况下你会怎么做?我的意思是,如果你有几个类都扩展了相同的基类,你会怎么做,但同时,这些类继承的所有属性都应该被编入索引。我可以仅在基类中注释这些属性以进行索引,这是非常有限的。我该怎么办?

感谢。

2 个答案:

答案 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无关,但它也可以解决问题。通过这种方式手动处理实体,您还可以自己管理索引,从而获得所需的所有灵活性。

只是一个问题,为什么要为每个子类指定不同的索引?