如何在Hibernate中使用mappedBy更新集合类型关系?

发布于 2024-07-21 07:53:24 字数 394 浏览 17 评论 0原文

我有两个相关的实体,比如说,

@Entity
public class Book {
    @ManyToOne
    Shelf shelf;
}

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf")
    Set<Book> books;
}

如果我获取一个空书架(没有书籍),创建一本新书并将其保留到书架上,然后再次获取该书架,则其书籍集合为空。 当我使用调试日志记录运行它时,我看到 Hibernate 不会第二次搜索书架,它只是从会话缓存中返回它,而它所在的位置并不知道它的书籍收藏已被更新。

如何消除影响并获取货架的更新状态?

谢谢,
阿尔乔姆。

I have two related entities, say

@Entity
public class Book {
    @ManyToOne
    Shelf shelf;
}

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf")
    Set<Book> books;
}

If I fetch an empty shelf (no books), create and persist a new book to the shelf and then fetch that shelf again, its books collection is empty. When I run it with debug logging I see that Hibernate doesn't search for the shelf for the second time, it just returns it from the session cache, where it lies not knowing, that it's books collection has been updated.

How can I get rid of the effect and get the updated state of the shelf?

Thanks,
Artem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

是伱的 2024-07-28 07:53:24

似乎您必须在单个会话(事务)的范围内手动维护它。 @Cascade 和 EAGER 都不影响会话缓存

Seems like you have to maintain it by hand in the scope of a single session (transaction). Neither @Cascade nor EAGER influence session cache

夜吻♂芭芘 2024-07-28 07:53:24

尝试为 Shelf 中设置的书籍设置获取类型 EAGER:

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
    Set<Book> books;
}

Try to set fetch type EAGER for books set in Shelf:

@Entity
public class Shelf {
    @OneToMany(mappedBy="shelf",fetch=FetchType.EAGER)
    Set<Book> books;
}
小红帽 2024-07-28 07:53:24

@Cascade 是您要找的吗?

Is @Cascade what you are looking for?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文