1

リポジトリ クエリの実行中にorg.neo4j.ogm.metadata.MappingException: Infinite recursion (StackOverflowError)が発生します。プロジェクトは SDN 3 から移植されました。

サンプル ドメイン モデル:

@NodeEntity
public class Person {
    ...
    @Relationship(type = "FRIENDSHIP")
    private Set<Friendship> friendships = new HashSet<Friendship>();
    ...
}

@RelationshipEntity
public class Friendship {
    ...
    @StartNode private Person person1;
    @EndNode private Person person2;
    Date since;
    ...
}

次のクエリを実行すると、例外がスローされます。

@Query("MATCH (person1 {id: {0}.id})-[rel:FRIENDSHIP]->(person2 {id: {1}.id}) "
        + "return rel")
Friendship getFriendship(Person person1, Person person2);

例外:

org.neo4j.ogm.metadata.MappingException: Infinite recursion (StackOverflowError) (through reference chain: com.example.domain.Friendship["person1StartNode"]->com.example.domain.Person["friendships"]->java.util.HashSet[0]->com.example.domain.Friendship["niperson1StartNode"]->com.example.domain.Person["friendships"]......

これは、 @StartNode と @EndNode が同じタイプであることに関係しているのではないかと思いました。しかし、 @EndNode が他のタイプの場合、同じ例外が発生しました。

スナップショットの操作。

4

2 に答える 2

1

クエリを次のように変更してください

@Query("MATCH (person1 {id: {0}})-[rel:FRIENDSHIP]->(person2 {id: {1}}) "
        + "return rel")
Friendship getFriendship(long person1, long person2);

(または の正しいデータ型id)

エンティティ自体であるパラメーターはサポートされていません。

そうは言っても、例外はまったく役に立ちません。https://jira.spring.io/browse/DATAGRAPH-694を開設

于 2015-07-06T10:48:53.107 に答える