我正在使用Spring Data Neo4j 2.2.2,并且遇到了与相同的开始和结束节点存在多个关系的问题。节点是否可以包含与同一端节点的关系集合?
假设某人可以与公司签订多份合同。我仿照这是
@NodeEntity
public class Company {...}
和
@NodeEntity
public class Person {
@RelatedToVia
private Set<Contract> contracts;
...
}
和
@RelationshipEntity
public class Contract {
@StartNode
private Person person;
@EndNode
private Company company;
...
}
要在合同中添加了一个人,我写这样的代码
Contract contract = new Contract();
contract.setPerson(person);
contract.setCompany(company);
// set other contract properties
person.getContracts().add(contract);
personDao.save(person)
其中personDao
是一个GraphRepository<Person>
。
在我的测试中,如果该人尚未拥有同一公司的合同,我可以向该人添加新合同。但是,如果我尝试将新合同添加到具有与现有合同相同的公司结尾节点的人员,它不会被保存。
equals()
和hashCode()
是针对@GraphId
实现,我已经证实,所有的对象都在合同Set
当我打电话save
。我也试过Collection
而不是Set
无济于事。
任何想法可能是错误的?
我想这是一个愚蠢的http://stackoverflow.com/questions/15002288/cannot-add-more-than-one-relationship-between-nodes-in-neo4j。但就我而言,将它们作为单独的集合是没有意义的,并且规避Spring Data直接使用模板是件怪事。我想我最终会让他们成为节点而不是关系。叹。 –