我正在使用 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
无济于事。
知道有什么问题吗?