как получить отношения из коллекции отношений между двумя узлами, используя springdata Neo4j с GraphRepository

У меня есть две сущности, такие как «Пользователи» и «Учетные записи». Узел пользователя, связанный с узлом учетной записи любым из 20 отношений. Пожалуйста, найдите образец дизайна изображения, прикрепленный

изображение узла

мне нужно искать учетные записи для соответствующих пользователей, используя любое из 20 отношений. я использовал шифрованный запрос для получения сведений о пользователе и учетных записях. Связь между двумя объектами будет любой из 20 отношений. поэтому я не могу аннотировать значение типа @RelationshipEntity. Пожалуйста, найдите код, например User.java

public class User
{ 
    private Long id;    
    String fulltextsearch;   

    String user_id; 

    String status; 

     @Relationship(type = "perm")
     List<Acronym> acronym;
     .....
         ...    
}

Акроним.java

@JsonIdentityInfo(generator=JSOGGenerator.class)
@RelationshipEntity
public class Acronym {
@GraphId
    Long id;
    String acronym;
    @StartNode
    private User user;
    @EndNode
    private Account account;
....
....
}

Пользовательский репозиторий.java

@RepositoryRestResource(collectionResourceRel = "User", path = "User")
public interface Userrepository extends GraphRepository<User> { 
    User findByLogin(@Param("login") String login);

    @Query("MATCH p=(user:User)-[r*0..1]->(account) WHERE user.login =~('(?i).*'+{Login}+'.*') RETURN p")
    Collection<User> findByloginContaining(@Param("login") String login);
}

Я попытался создать объекты для каждого отношения (т.е. 20 объектов отношений). я не уверен, что это правильный способ получить значение. Может ли кто-нибудь помочь мне узнать, как получить отношения к учетной записи? он всегда возвращается как null.

Заранее спасибо.


person kris    schedule 04.03.2016    source источник


Ответы (1)


OGM/SDN 4 не поддерживает неизвестные типы отношений. Тип отношения должен быть указан в @RelationshipEntity.

Один из способов сделать это, как вы сказали, создать @RelationshipEntity для каждого типа, но это также означает, что вы должны указать 20 таких отношений в своем классе User, потому что тип отношения отличается (даже если начальные/конечные узлы одинаковы) . Это может быть не идеально, и им трудно управлять.

Если ваше приложение в основном работает с динамическими типами отношений, OGM может не подойти.

ПРИМЕЧАНИЕ. Сопоставление результатов пользовательских запросов с объектами поддерживается только в OGM 2.x/SDN 4.1. Вы не можете вернуть путь, только объекты, составляющие путь, такие как узлы и ссылки.

person Luanne    schedule 04.03.2016
comment
спасибо за ваш ценный ответ. Я обновлю свои проекты для поддержки OGM 2.x/SDN 4.1. Поскольку я все еще учусь, не могли бы вы предложить какую-либо ссылку с примером кода для начала. - person kris; 05.03.2016
comment
Справочное руководство — хорошее место для начала: docs.spring.io/spring-data/neo4j/docs/4.1.0.M1/reference/html. Затем есть пример проекта на github.com/neo4j-examples/sdn4-cineasts/. tree/4.1 и сообщение в блоге (серия из двух частей) по адресу graphaware.com/neo4j/2016/02/24/ - person Luanne; 06.03.2016