Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Spring数据Neo4j中实现双向关系?_Java_Neo4j_Spring Data_Relationship_Bidirectional - Fatal编程技术网

Java 如何在Spring数据Neo4j中实现双向关系?

Java 如何在Spring数据Neo4j中实现双向关系?,java,neo4j,spring-data,relationship,bidirectional,Java,Neo4j,Spring Data,Relationship,Bidirectional,我正在使用Spring数据Neo4j对一个非常简单的用例进行建模:我希望有人,他们通过友谊关系联系在一起。这是我的代码(这里省略了getter和setter): 或者将关系的方向设置为direction=direction.OUTGOING。但是,这会创建一个定向边,这不是我想要的 为什么我在第一种情况下不占优势呢?有什么想法吗?:) 提前感谢,, Manu所有Neo4j边必须定向,并且不能是双向的。您可以单向创建友谊,也可以无方向查询友谊。或者,可以在两个朋友之间创建两条单独的边。我认为后者是

我正在使用Spring数据Neo4j对一个非常简单的用例进行建模:我希望有人,他们通过友谊关系联系在一起。这是我的代码(这里省略了getter和setter):

或者将关系的方向设置为direction=direction.OUTGOING。但是,这会创建一个定向边,这不是我想要的

为什么我在第一种情况下不占优势呢?有什么想法吗?:)

提前感谢,,
Manu

所有Neo4j边必须定向,并且不能是双向的。您可以单向创建友谊,也可以无方向查询友谊。或者,可以在两个朋友之间创建两条单独的边。我认为后者是更灵活的,因为一个人可以考虑另一个朋友,但反之亦然。

< P>如果你不关心方向,那么你可以指定“代码>方向=关系”,无方向的< /代码>,这将保证两个节点实体之间的路径可以从任何一方通航。

例如,考虑<代码>合作伙伴> <代码> >两个公司之间的关系,其中

(A)-[:PARTNER_OF]→(B) implies (B)-[:PARTNER_OF]→(A)
关系的方向并不重要;只有这两家公司之间存在一种合作伙伴关系这一事实才是重要的。因此,
无方向的
关系是正确的选择,确保两个合作伙伴之间只有一个此类关系,并且可以从任一实体在他们之间导航


资料来源:良好的关系:。

回答得好。有向边不必这样处理,您可以始终将它们视为无向边,这很好。是2个关系(均为定向关系)还是1个关系?我认为这取决于元数据需求。如果关系实际上是唯一的,而不是相互的(即,我跟随Bob,但他不跟随我),则2条边。如果边不是唯一的,最好只使用一个边,而不是使用2,这样可以“双向定向”保存边并使用“-”而不是“”进行查询。谢谢,另一个人的空哈希集覆盖了当前边的关系。将其设置为null或仅保存person1。Neo4j中的关系始终是定向的。
@Transactional
private void populateTwoPersons() {
    Person person1 = new Person("Alice", "pw1");
    Person person2 = new Person("Bob", "pw2");

    List<Person> persons = Arrays.asList(person1, person2);
    personRepository.save(persons);

    person1.befriend(person2);

    personRepository.save(persons);
}
public void befriend(Person person) {
    this.friends.add(person);
    person.getFriends().add(this);
}
(A)-[:PARTNER_OF]→(B) implies (B)-[:PARTNER_OF]→(A)