只能与一个元素相关
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,但是当您创建网站时,它们似乎与模型不一致。 Subsite1
和 Subsite2
都将它们的 parent 设置为 site1
但 site
没有其 children 的记录(应该是两个子站点)。如果您的 object 和图形模型一致,应该可以工作。
我在 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,但是当您创建网站时,它们似乎与模型不一致。 Subsite1
和 Subsite2
都将它们的 parent 设置为 site1
但 site
没有其 children 的记录(应该是两个子站点)。如果您的 object 和图形模型一致,应该可以工作。