Я не могу восстановить отношения - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть узел Person и отношения вызова. Я хочу найти конкретного человека и тех, кто ему звонил. Мой код указан ниже

@NodeEntity
public class Person extends BaseEntity{
     @Property(name = "id")
     private String mobile;
     private String name;
     private int partition;
     private int StronglyConnectedComponents;
     private int ConnectedComponent;
     private int LabelPropagation;
     private double pagerank;
     private int seed_label;   //在线算法结果写回字段
     @Relationship(type="Call",direction=Relationship.OUTGOING)
     private List<Person> contact;
     //setter and getter
}
@RelationshipEntity(type = "Call")
public class Call extends BaseEntity{
   @StartNode
   private Person caller;
   @EndNode
   private Person callee;
   private String BS;
   private String time;
   //setter and getter
}
@Repository
public interface PersonRepository extends GraphRepository<Person>{
    Person findById(String id, @Depth int depth);
}


public String test() {
    Person person = community.personRepository.findById("18565124452",2);
    return person.toString();
}

Использовать метод теста. Я могу получить свойства узла человека, но контакт свойства отношения имеет значение null. Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Я новичок в neo4j, и у меня была та же проблема с нулевыми отношениями. Я думаю, что единственный способ получить отношения - использовать язык запросов шифров. Исправьте ошибку, указанную мейстермейром. Попробуйте добавить этот метод в свой класс репозитория.

   @Query("MATCH (p:Person) WHERE ID(p)=18565124452 MATCH (p)-[call:Call*]->(p2) return p, call, p2")
    Person getPersonById(long personId);

Также я думаю, что вам нужно изменить:

 @Property(name = "id")

до

@Id
@GeneratedValue
private Long id;

для создания уникальных идентификаторов каждый раз, когда вы создаете новые узлы Person.

0 голосов
/ 20 ноября 2018

Похоже на старую версию Spring Data Neo4j. Но это не должно быть проблемой здесь. В вашем личном классе вы определяете

 @Relationship(type="Call",direction=Relationship.OUTGOING)
 private List<Person> contact;

где это должно быть

 @Relationship(type="Call",direction=Relationship.OUTGOING)
 private List<Call> contact;
...