Как получить дополнительный атрибут на грани с Spring Data ArangoDB - PullRequest
0 голосов
/ 26 апреля 2020

Я только начинаю реализацию хобби-проекта с ArangoDB и его библиотекой данных Spring.

Я создал два документа с именами User и Post. И создали один край с именем «Голосовать».

У меня есть атрибут custum в Голосовании, отличный от _from и _to. Я могу сохранить этот край с помощью этого пользовательского атрибута, а также увидеть его из интерфейса ArangoDB. Но я не смог получить этот атрибут с моим Java объектом.

My Environment; Версия ArangoDB: 3.6.3, версия arangodb-spring-data: 3.1.0

Мои пункты ниже;

@Document("posts")
@Getter @Setter @NoArgsConstructor
public class Post {

  @Id
  String id;

  @Relations(edges = Vote.class, lazy = true, direction = Direction.INBOUND)
  Collection<Vote> votes;
  @Ref
  User writtenBy;

  String content;
  List<String> externalLinks;
  List<String> internalLinks;

  public Post(String content) {
    super();
    this.content = content;
  }

}


@Document("users")
@Getter @Setter @NoArgsConstructor
public class User {

  @Id
  String id;

  String name;
  String surname;
  String nick;
  String password;

  public User(String name, String surname, String nick) {
    super();
    this.name = name;
    this.surname = surname;
    this.nick = nick;
  }

}

@Edge
@Getter @Setter @NoArgsConstructor
@HashIndex(fields = { "user", "post" }, unique = true)
public class Vote {

  @Id
  String id;

  @From
  User user;

  @To
  Post post;

  Boolean upvoted;

  public Vote(User user, Post post, Boolean upvoted) {
    super();
    this.user = user;
    this.post = post;
    this.upvoted = upvoted;
  }

}

1 Ответ

1 голос
/ 06 мая 2020

Аннотация @Relations должна применяться к полю, представляющему связанные вершины (не ребра). Например. это должно работать:

  @Relations(edges = Vote.class, lazy = true, direction = Direction.INBOUND)
  Collection<User> usersWhoVoted;

Вот связанное до c: https://www.arangodb.com/docs/3.6/drivers/spring-data-reference-mapping-relations.html

...