0

大きなデータベースでは、ノードタイプのプロパティのデータ型をIntegerからString(つまり42〜42)に変更する必要があります。 )を使用して、非数値IDもサポートします。Neo4j-OGM/Spring-Data-Neo4j:プロパティタイプをIntegerからStringに移行する

自分でmigrationを実行しましたが、そのプロパティはデータベースに予期された型を持つようになりました。 私はJSONとしてクエリ結果表示するためのNeo4j-ブラウザ能力使って、これを確認しました:「ID」プロパティは、ノード自体の(数値)のIDとは異なることに

"graph": { 
    "nodes": [ 
     { 
      "id": "4190", 
      "labels": [ 
       "MyEntity" 
       ], 
      "properties": { 
       "id": "225" 
      } 
     } 
    } 

注意を。

対応するSpring-Data-Neo4j 4appでは、対応するプロパティのタイプをIntegerからStringに調整しました。

org.neo4j.ogm.exception.MappingException: Error mapping GraphModel to instance of com.example.MyEntity 
[...] 
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Can not set java.lang.String field de.moneysoft.core.model.base.UriEntity.transfermarktId to java.lang.Integer 
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:43) 
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:68) 
    at org.neo4j.ogm.context.GraphEntityMapper.writeProperty(GraphEntityMapper.java:232) 
    at org.neo4j.ogm.context.GraphEntityMapper.setProperties(GraphEntityMapper.java:184) 
    at org.neo4j.ogm.context.GraphEntityMapper.mapNodes(GraphEntityMapper.java:151) 
    at org.neo4j.ogm.context.GraphEntityMapper.mapEntities(GraphEntityMapper.java:135) 
    ... 122 common frames omitted 
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.String field com.example.MyEntity.id to java.lang.Integer 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167) 
    at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171) 
    at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81) 
    at java.lang.reflect.Field.set(Field.java:764) 
    at org.neo4j.ogm.entity.io.FieldWriter.write(FieldWriter.java:41) 
    ... 127 common frames omitted 

私は(少なくとも私はそれを見ていないモデルやデータ型のいずれかの種類を保存するのNeo4j-OGMを認識していないです:私は、しかし、最初のロード時に影響を受けた事業体は、私が今受け、十分であることが予想しましたグラフ)。なぜ私の財産がIntegerだとまだ信じていますか?

編集: ノードエンティティ移行後:

@NodeEntity 
public class MyEntity 
{ 
    @Property 
    protected String name; 
    @Property 
    private String id; 
} 

私は、他の関連するコードを認識していないです。

+0

NodeEntity定義を含むコードを表示できますか? – cybersam

+0

@cybersamはNodeEntityのコードを追加しました。関連性のあるものは何ですか? – geld0r

答えて

0

あなたが見ているエラーが間違っていると思われる場合は、おそらくそうです。 良い夜の眠りの後、私は間違ったデータベースインスタンスに接続していることに気づきました:マイグレーションされたものとブラウザで見ていたものではなく、

正しいインスタンスに接続したら、すべて正常に動作しました!

関連する問題