我正在使用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直接使用模板是件怪事。我想我最終會讓他們成爲節點而不是關係。嘆。 –