2016-03-04 2 views
2

У меня есть два объекта, такие как пользователи и учетные записи. Пользовательский узел связан с узлом учетной записи с любым из 20 отношений. Вы можете найти образец дизайна изображение прилагаетсяКак получить отношения из коллекции отношений между двумя узлами, используя springdata Neo4j с GraphRepository

nodelayout image

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

public class User 
{ 
    private Long id;  
    String fulltextsearch; 

    String user_id; 

    String status; 

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

Acronym.java

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

Userrepository.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.

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

ответ

1

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

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

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

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

+0

Благодарим вас за ценный ответ. Я обновляю свои проекты для поддержки OGM 2.x/SDN 4.1. Поскольку я все еще нахожусь в кривой обучения, можете ли вы предложить любую ссылку с примером кода для начала. – kris

+0

Справочное руководство - это хорошее место для запуска - http://docs.spring.io/spring-data/neo4j/docs/4.1.0.M1/reference/html/. Затем есть образец проекта на странице https://github.com/neo4j-examples/sdn4-cineasts/tree/4.1 и блоге (2 части) на http://graphaware.com/neo4j/2016/02/24 /upgrading-spring-data-neo4j-4-1.html – Luanne

 Смежные вопросы

  • Нет связанных вопросов^_^