当前位置: 首页 > 知识库问答 >
问题:

Hibernate双向映射

子车俊哲
2023-03-14

我有两张桌子。后

和喜欢

在这些对象之间进行hibernate注释映射,以便在类似于Post bean的。。。。

private List<Like> likes;

@OneToMany(fetch = FetchType.LAZY, mappedBy = "post") 
    public List<Like> getLikes() {
        return likes;
    }

就像豆子一样

private Post post;

 @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "PostId")
    @JsonIgnore
    public Post getPost() {
        return post;
    }

问题

  1. 该关联是否由Post{@OneToOne}和like{@ManyToOne}正确?
  2. 获取类型是Lazy,但仍然得到依赖循环。为什么?

尝试

要删除依赖关系循环,我尝试了

  1. {@xmltransive}
  2. {@JsonIgnore}
  3. {@JsonManagedReference}和{@JsonBackReference}

你能帮我吗,还能有什么问题?谢谢。

编辑

>

  • 添加了mappedBy=“post”和@OneToMany
  • 在getPost()上添加了@JsonIgnore

    封送到JSON并得到以下异常

    {org.springframework.http.converter.HttpMessageNotWritableException:无法写入内容:无法初始化代理-没有会话(通过引用链:java.util.HashMap["post"]-

  • 共有1个答案

    杭镜
    2023-03-14

    该关联是否符合Post{@OneTo很多}和like{@ManyToOne}?

    不,这是不正确的。您有两个独立的关联。要使其成为单个双向关联,OneTo多边形必须是ManyToOne的反面:

    @OneToMany(mappedBy = "post")
    

    注意,对于toMany关联,LAZY是默认值。

    fetch类型是惰性的,但仍在获取依赖项循环。为什么?

    这与Hibernate无关,而与JSON或XML封送器有关。关联是懒惰的这一事实与它无关:它看到一个getPost()或一个getLikes()方法,所以它调用它。调用它会懒洋洋地加载帖子或类似内容,并将其返回给封送员,封送员因此会封送结果。

    您尝试使用XML和JSON注释的事实令人怀疑:您是编组到JSON还是编组到XML?和哪个元帅?您尝试了什么代码?你有什么问题?没有这些信息,就不可能回答。

     类似资料:
    • 问题内容: 映射双向列表时,我不了解Hibernate的行为。Hibernate生成的SQL语句对我来说并不是最佳的。有人可以启发我吗? 情况如下:我有一对多的父子关系。我将此关系与双向列表映射。 根据《Hibernate注释参考指南》(第7章:与索引集合的双向关联),映射应如下所示: 但是在这种情况下,Hibernate在保留一个孩子的父母时会产生三个SQL语句: 第三条语句似乎是多余的,因为并

    • 1. 前言 通过本节课程的学习,你将发现关联对象之间的微妙关系。相信这种关系对你更深入地认识 HIbernate 有很大的帮助。 通过本节课程,你将了解到: 多对多双向关联映射中哪一方是关系维系者; 级联操作与关系维系者。 2. 关系维系者 新学期开始了,同学们选择了各自喜欢的课程,现在为学生添加选修课程的任务就要落在 Hibernate 的身上。一起来看看 Hibernate 是如何完成这个任务

    • 1. 前言 本节课程和大家一起聊聊一对多关联映射。通过本节课程,你将了解到: 如何实现一对多关联映射; 如何实现双向一对多关联映射; 关联映射中的级联操作。 2. 一对多关联映射 关系型数据库中表与表中的数据存在一对多(或多对一)关系。 如学生表、班级表。一个班级有多个学生,多个学生可以在同一个班级。 一对多或多对一本质上是一样的,如同一块硬币的正面和反面,只是看待事物的角度不同而已。 数据库中有

    • 问题内容: 我有2个类:User和UserPicture具有1:1的关系。 UserPicture中的“ user”将被加载,而UserPicture中的“ userPicture”则不会加载-我错了吗? 编辑 必须添加,我只是创建一个UserPicture并插入它们(使用现有的userId)-也许我需要在UserPicture中级联“ user”? 问题答案: 您必须映射您的课程。

    • 下面的例子中,我有一个单独的域层和一个单独的持久层。我使用Mapstruct进行映射,当从域映射到实体或从实体映射到域时,会出现堆栈溢出,因为双向引用总是被调用- 用于映射的类非常基本

    • 我的实体如下所示: 我的问题是: 为什么会这样,即使在我添加食谱和房子之间的联系之前没有发生? 我怎样才能修好它? 原因是什么?