SpringBoot Родитель-ребенок Отношения - PullRequest
0 голосов
/ 01 марта 2019

У меня есть следующий код Springboot:

Comment.java

@Entity
@Getter @Setter @NoArgsConstructor @RequiredArgsConstructor
public class Comment extends Auditable {

    @Id
    @GeneratedValue
    private Long id;

    @NonNull
    private String comment;

    @ManyToOne(fetch = FetchType.LAZY)
    private Link link;
}

Link.java

@Entity
@Getter @Setter @NoArgsConstructor @RequiredArgsConstructor
public class Link extends Auditable {

    @Id
    @GeneratedValue
    private Long id;

    @NonNull
    private String title;

    @NonNull
    private String url;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "link")
    private List<Comment> comments = new ArrayList<>();

    public void addComment(Comment c) {
        comments.add(c);
    }
}

И следующий Runner:

 @Bean
 CommandLineRunner someRunner(LinkRepository lr, CommentRepository cr) {
     return args -> {
         Link link = new Link("Getting started", "url");
         Comment c = new Comment("Hello!");
         link.addComment(c);
         linkRepository.save(link);
     };
 };

Я пытаюсь связать комментарий со ссылкой и сохранить оба вместе.Тем не менее, это вывод:

[
    {
        createdBy: null,
        createdDate: "2/28/19, 11:48 PM",
        lastModifiedBy: null,
        lastModifiedDate: "2/28/19, 11:48 PM",
        id: 2,
        comment: "Hello!",
        link: null
    }
]

Любой совет о том, как я могу получить ссылку, чтобы фактически показать в списке ссылок?

1 Ответ

0 голосов
/ 01 марта 2019

В двунаправленных отношениях вы должны установить обе стороны отношения;

Link link = new Link("Getting started", "url");
Comment comment = new Comment("Hello!");
comment.setLink(link);  // missing in your code
link.addComment(comment);
linkRepository.save(link);

Проверить " Двунаправленные связи" многие-к-одному ""> здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...