只能与一个元素相关

Can relate to only one element

我在 Java 中使用 Neo4j OGM 2.0.4 驱动程序。我在向元素添加多个关系时遇到问题。

我是这样做的:

Site site1 = new Site();
site1.setTitle("Site 1");
site1.setHtmlCode("Content of site 1");
Site site2 = new Site();

Site subsite1  = new Site();
subsite1.setTitle("Subsite 1");
subsite1.setHtmlCode("Content of subsite 1");
subsite1.setParent(site1);

Site subsite2  = new Site();
subsite2.setTitle("Subsite 2");
subsite2.setHtmlCode("Content of subsite 2");
subsite2.setParent(site1);

session.deleteAll(Site.class);

session.save(site1);

session.save(subsite1);
session.save(subsite2);

当我想显示所有站点节点(在 localhost:7474 上)时,"Subsite 1" 没有任何关系。

@NodeEntity
public class Site extends Entity
{
  private String _title;
  private String _htmlCode;

  @Relationship(type = "SITE_CREATED_BY")
  Author _author;

  @Relationship(type = "IS_CHILD")
  Set<Site> _parentSite;

  @Relationship(type = "IS_CHILD", direction = Relationship.INCOMING)
  Set<Site> _childSites;

  public Site()
  {
    _parentSite = new HashSet();
    _childSites = new HashSet();
  }

  public void setTitle(String title)
  {
    _title = title;
  }

  public String getTitle()
  {
    return _title;
  }

  public void setHtmlCode(String htmlCode)
  {
    _htmlCode = htmlCode;
  }

  public String getHtmlCode()
  {
    return _htmlCode;
  }

  public void setAuthor(Author author)
  {
    _author = author;
  }

  public void setParent(Site site)
  {
    _parentSite.add(site);
  }
}

实体: public 抽象 class 实体 { 私人长号; 私人最终 ZonedDateTime _dateOfCreation;

  Entity()
  {
    _dateOfCreation = ZonedDateTime.now();
  }

  public Long getId()
  {
    return id;
  }

  public ZonedDateTime getDateOfCreation()
  {
    return _dateOfCreation;
  }

  @Override
  public boolean equals(Object o)
  {
    if (this == o) return true;
    if (o == null || id == null || getClass() != o.getClass()) return false;

    Entity entity = (Entity) o;

    return id.equals(entity.id);
  }

  @Override
  public int hashCode()
  {
    return (id == null) ? -1 : id.hashCode();
  }
}

我做错了什么?

在这种情况下,如果您在同一类型节点之间有两个不同方向的关系,首先,请确保您使用@Relationship 注释两个字段以及 setter/accessor 方法,指定方向.

object 模型中的

Site 引用了 parent 和 children,但是当您创建网站时,它们似乎与模型不一致。 Subsite1Subsite2 都将它们的 parent 设置为 site1site 没有其 children 的记录(应该是两个子站点)。如果您的 object 和图形模型一致,应该可以工作。