代码之家  ›  专栏  ›  技术社区  ›  stefan.stt

JPA双向关系父级为空

  •  0
  • stefan.stt  · 技术社区  · 5 年前

    我父母之间有双向关系 AbstractNewsContent 以及它的孩子“新闻评论”。当我保存 摘要新闻内容 添加了 NewsComment 这个 newsComment.getAbstractNewsContent null

    摘要新闻内容:

    @Entity
    @Table(name = "NEWS_CONTENT")
    public abstract class AbstractNewsContent {
    
        @OneToMany(mappedBy = "newsContent", cascade = CascadeType.ALL, orphanRemoval = true)
        private Set<NewsComment> newsComments = new HashSet<>();
    
    }
    

    新闻评论:

    @Entity
    @Table(name = "NEWS_COMMENT")
    public class NewsComment {
    
        @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
        @JoinColumn(name = "news_content_id", nullable = false)
        @OnDelete(action = OnDeleteAction.CASCADE)
        private AbstractNewsContent newsContent;
    
    }
    

        DailyNewsContent dailyNewsContent = new TestDataBuilder()
                .createDailyNewsContent().setRequiredDefaults(categoryFood)
                .addComment().setRequiredDefaults().parent()
                .build();
    
        DailyNewsContent dbDailyContent = abstractNewsContentRepository.save(dailyNewsContent);
    
        // there is the added newsComment inside the newsContent
        Assertions.assertEquals(1, dbDailyContent.getNewsComments().size());
        // NewsComment reference to the NewsContent is null
        Assertions.assertNull(new ArrayList<>(dbDailyContent.getNewsComments()).get(0).getNewsContent());
    
        abstractNewsContentRepository.delete(dbDailyContent);
        // newsComment is deleted from the database, there is nothing in the Iterable
        newsCommentRepository.findAll();
    
    0 回复  |  直到 5 年前