Stackoverflow - 在OGM中加载RelationshipEntity时出现异常

时间:2017-12-08 13:35:19

标签: java neo4j relationship stack-overflow neo4j-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的用户Sven在数据库中有一个项Hammer并想要加载它。 当我调用OGM session.load(User.class, 1)时,我总是得到Stackoverflow-Exception,因为用户持有关系,持有用户,持有关系,等等。 这对我来说是错误的使用OGM的方式,我不想限制加载到0的深度。 然而,OGM规范告诉我,没有其他方法,因为RelationshipEntity需要一个Start-和EndNode,并且必须在其中一个中引用。 因此除了将Loading-Depth重新设置为0之外,我没有看到防止此异常的方法。 还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您将数据公开为JSON。转换器还需要遍历 &#39;对象树&#39;这会导致stackoverflow。

解决方案很简单:您正在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;