大きなデータベースでは、ノードタイプのプロパティのデータ型を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;
}
私は、他の関連するコードを認識していないです。
NodeEntity定義を含むコードを表示できますか? – cybersam
@cybersamはNodeEntityのコードを追加しました。関連性のあるものは何ですか? – geld0r