1

次のデータモデルがあるとしましょう:

public class A {

    @Indexed(indexType = IndexType.FULLTEXT, indexName = "property1")
    String property1;
}

public class B extends A {

    @Indexed(indexType = IndexType.FULLTEXT, indexName = "property2")
    String property2;
}

property1別のインデックス名でクラス B のインデックスを作成するように Spring フレームワークに指示できますか? そうでない場合、そのような場合はどうしますか?つまり、すべてが同じ基本クラスを拡張するクラスがほとんどなく、同時に、それらのクラスが基本クラスから継承するすべてのプロパティにインデックスを付ける必要がある場合はどうしますか。これらのプロパティに注釈を付けて、基本クラスでのみインデックスを作成できますが、非常に制限されています。私に何ができる?

ありがとう。

4

2 に答える 2

2

インデックス定義アノテーションのlevel属性は に設定できますLevel.INSTANCE。詳細については、ここでspring-data-neo4j のドキュメントを参照してください。

ドキュメントからの抜粋は次のとおりです。

フィールドがスーパークラスで宣言されているが、サブクラスに異なるインデックスが必要な場合、レベル属性はインデックスとして使用されるものを宣言します。Level.CLASS はフィールドが宣言されたクラスを使用し、Level.INSTANCE は提供されたクラスまたは実際のエンティティ インスタンスのクラスを使用します。

于 2013-04-30T17:44:04.393 に答える
0

それは不可能だと思います。あなたproperty1は常に index でインデックス化されますproperty1。1 つのフィールドに複数のインデックスを指定できるようになれば、おそらく問題は解決するでしょうが、現時点では不可能です。少し前に、これについて問題を提起しましたが、まだ実装されていません。

本当にドメイン (エンティティ) オブジェクト アプローチが必要な場合は、ドメイン エンティティ アプローチを選択することもできます。Spring や Spring Data Neo4j とは関係ありませんが、うまく機能します。このようにエンティティを手動で処理することにより、インデックスを自分で管理することもできるため、必要なすべての柔軟性が得られます。

サブクラスごとに異なるインデックスを指定する必要があるのはなぜですか?

于 2013-04-30T13:54:39.813 に答える