Обновление весенних данных neo4j 3.x до 4.x Relationship Operations

В Spring данные neo4j 3.x Для создания связи между двумя узлами, и связь содержит набор свойств, ранее использовавшихся для достижения этого с помощью API.

create :
  n4jOperations.createRelationshipBetween(Object start, Object end, Class<R> relationshipEntityClass, String relationshipType, boolean allowDuplicates);

delete:
n4jOperations.deleteRelationshipBetween(Object start, Object end, String type);

get:
n4jOperations.getRelationshipBetween( from, to, relationshipClass, relationshipType );

Но после миграции я не нашел выше apis

согласно документам говорится

@NodeEntity
public class Student {
    private String name;

    @Relationship(type = "ENROLLED")
    private Set<Enrollment> enrollments;    
}

By repo.save(Student); 

// Создание отношений было возможно, но новый API, как я могу достичь следующих вариантов использования

1.Как избежать создания повторяющихся отношений?

2. Получить связь между двумя узлами?

2. удалить связь между двумя узлами?


person arun kumar    schedule 08.10.2015    source источник


Ответы (1)


SDN 4 не поддерживает низкоуровневые графовые операции, такие как непосредственная установка узлов и отношений.

Отношения на графике моделируются и управляются с помощью объектов ссылок в классах домена. Они бывают двух видов: неявные и явные. Неявные отношения описываются простыми ссылками между двумя объектами узла, например. Заказчик и адрес:

class Customer {
   @Relationship(type="LIVES_AT")
   Address address; // implied (:Customer)-[:LIVES_AT]->(:Address)
   ...   
}

Явные отношения моделируются с использованием объектов RelationshipEntity, и им разрешено иметь свойства (но не обязательно). Доступ к ним по-прежнему осуществляется как к ссылкам в вашей модели предметной области.

class Person {
   @Relationship(type="RATED")
   List<Rating> ratings
}

class Movie {
}

@RelationshipEntity(type="RATED")
class Rating {
    @StartNode Person person;
    @EndNode Movie movie;

    int stars;
}

Примечание. Если вам не нужны свойства для определенного отношения, вам не нужно использовать RelationshipEntity.

Чтобы ответить на ваши конкретные вопросы:

1) SDN 4.0 не создает повторяющихся отношений. Независимо от того, сколько раз вы сохраняете конкретную ссылку на объект, она будет представлена ​​только одним отношением на графике.

2) Надеюсь теперь понятно!

3) Установка ссылки на объект в значение null и сохранение родительского объекта приведет к удалению связи. Или, если ссылка является частью коллекции, удалите ее из коллекции. Вы должны убедиться, что ссылки на объекты удалены с обеих сторон. Например, если A содержит ссылку на B, а B содержит ссылку на A, вы должны удалить ссылку A на B, а также ссылку B на A.

person Vince    schedule 08.10.2015
comment
Это также может помочь: docs.spring. io/spring-data/data-neo4j/docs/current/reference/ - person ATG; 09.10.2015
comment
Можете ли вы поделиться ссылкой на рабочий пример удаления корабля отношений с использованием данных Spring, а не по запросу - person arun kumar; 11.10.2015