只能涉及到一个元素

问题描述:

我正在使用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在您的对象模型中引用了父级和子级,但是当您创建网站时,它们看起来与模型不一致。 Subsite1Subsite2都将其父母设置为site1,但site没有其子女的记录(应该都是子网站)。如果您的对象和图形模型一致,应该可以工作。