2016-05-02 7 views
0

migration of SDN (Spring-data-neo4j) v3 to SDN4によれば、インデックスはもはや存在しないため、これ以上動作することはありません。Spring-data-neo4j v4、インデックスがない理由

@NodeEntity 
public class User extends Unversioned{ 
    @Indexed(unique=true,failOnDuplicate = true) // <-- THIS 
    private String login; 
    ... 
} 

hereまたはthereによると、誰が驚いているようです。それはモデル自体に制約が定義されているのではないでしょうか?

Sring-dataのメインページで定義されたミッション:

春データの使命は、まだ基礎となるの特殊な特性を維持しながら、データアクセスのためにおなじみと一貫、Springベースのプログラミングモデルを提供することですデータストア。制約が非常にJavaベースのモデルで定義されることを許可

@Entity 
public class Customer extends AbstractEntity { 

    private String firstname, lastname; 

    @Column(unique = true) 
    private EmailAddress emailAddress; 

はあまりエラーが発生しやすいように私には思えた:the latest Spring-data-JPA official exampleと比較し、制約がまだモデルに定義されていても

システム。 モデル&の制約が解除されている場合、モデルを一貫して構築するにはどうすればよいでしょうか?私は何が欠けていますか?

答えて

0

SDN 4以降、インデックス管理は、マッピングフレームワークの範囲外とみなされ、Spring以外で管理することをお勧めします。

さらに詳しい情報:http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/#reference_programming-model_indexing

+0

ため@Indexed注釈で一行をトレードしかし、私は、なぜ、このような大幅な設計変更を得ることはありません。どのように街の人は彼の制約を定義することになっていますか?Javaベースの定義はリファクタリングの問題ではなく、一貫したBean定義(それらすべてを統治する)であると思われました – Qualaelay

+1

Neo4jTemplateまたはSessionを介してcypherを実行することによっても定義できます。この決定は、インデックス管理がもはやマッピングフレームワークの責任であるとは考えられなかったために行われました。 – Luanne

+0

それはポイントです。変数名が変わったとすると、別のファイルのインデックスも変更する必要があります。これはこれまで達成されてきたすべてのものへの回帰です...制約は非常に重要です。それはデータを失う唯一の柵です。マージが支配的であるneo4jコンテキストでは、私はそのような分離モデルにアップグレードしたくありません。ご回答有難うございます – Qualaelay

2

私は「トレンチから」あなたに答えを与えることをしようとします。私はSDN 3.xをかなり使いました。今は4.xを使用しています。私はまた、@Indexedというアノテーションを持つバネデータmongoを使用しています。

プロパティにインデックスを作成したいときは非常に便利だと私は同意します。

しかし、長期的にはいくつかの問題があります。アプリケーションがデプロイされ、管理されているときは、宣言的にではなく、コードでインデックスを管理する必要がありました。これらのプロパティの名前を変更

  • が含ま

    、これらのアノテーションは、通常のあらゆる可能性を提供しない

  • 古いインデックス
  • インデックスを変更する(例えば作ること一意性制約)を削除しませんネイティブデータベースインデックス定義
  • クラス階層 - 基本クラスのプロパティに@Indexedがある場合、作成されるインデックスは何ですか?基本クラスのラベルだけ? (またはモンゴでのコレクション)、すべての子供...?最後に

あなたは別の

@Autowired 
private Neo4jOperations operations; 

@PostConstruct 
public void createIndexesAndConstraints() { 
    ... 
    operations.query("CREATE INDEX ON :Person(email)", EMPTY_MAP); 
    ... 
} 
関連する問題