只能涉及到一个元素
问题描述:
我正在使用Neo4j OGM 2.0.4驱动程序和Java。添加多个元素的关系时遇到问题。只能涉及到一个元素
我做这样的事情:
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),则“子网站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);
}
}
实体: 公共抽象类实体 { 私人长期ID; private final 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();
}
}
我在做什么错?
答
在这种情况下,如果在同一类节点之间有不同方向上的两个关系,首先请确保使用@关系对指定方向的字段以及setter/accessor方法进行注释。
Site
在您的对象模型中引用了父级和子级,但是当您创建网站时,它们看起来与模型不一致。 Subsite1
和Subsite2
都将其父母设置为site1
,但site
没有其子女的记录(应该都是子网站)。如果您的对象和图形模型一致,应该可以工作。