2017-12-08 17 views
0

でRelationshipEntityをロードしている間、私は以下のクラスがあります。StackOverflowの例外OGM

@NodeEntity 
public class Item{ 
    //... 
} 

@RelationshipEntity(type = "HAS") 
public class HasRelation{ 
    //... 
    @StartNode 
    private User user; 

    @EndNode 
    private Item item; 
} 

@NodeEntity 
public class User{ 
    //... 
    @Relationship(type="HAS") 
    private Set<HasRelation> has; 
} 

は、だから今は、ID 1は、データベース内の項目Hammerを持って、それをロードすると、ユーザーSvenを持っています。私は、ユーザーがそうで関係を持って、ユーザーを保持し、関係を保持し、かつので、私はいつも、StackOverflowの例外を取得しOGM session.load(User.class, 1)を呼び出し 。 は、これは私のためOGMを使用するために間違った方法のように感じていると私はRelationshipEntityスタートを必要とするため、OGM仕様は私に語ったしかし、私は他の方法がないことを、0 にロードしたことにより、深さを制限しません - とEndNodeがあり、それらのいずれかで参照されている必要があります。 だから私は0 に読み込んで、深さをresticting以外に、この例外を防ぐ方法は、より良い方法はあります表示されないのですか?

+0

「RelationshipEntity」にプロパティが設定されているかどうかを確認してください。これも必須です。 – meistermeier

+0

「RelationshipEntity」にはいくつかのプロパティがあります。私は、読みやすくするためにそれらを除外しました。 – Urr4

+1

どのバージョンのOGMを使用していますか?私はそれを再現しようとします。 – meistermeier

答えて

1

あなたはJSONとしてデータを公開しています。コンバータも 'オブジェクトツリー'をトラバースする必要があり、これによってスタックオーバーフローが発生します。

解答は簡単です:Userクラスで発信関係を定義していますので、このオブジェクトはjackson libが関係にヒットしたときに再度訪問する必要はありません。

@RelationshipEntity(type = "LIKES") 
public class LikedBook { 

@Id 
@GeneratedValue 
private Long id; 

private String how; 

@StartNode 
@JsonIgnore // <- "do not go back" 
private User user; 

@EndNode 
private Book book; 
+0

これは完全に動作します。私は問題がJSON変換の中にあるとは思っていませんでした。どうもありがとうございました! – Urr4