gpt4 book ai didi

Hibernate:获取具有过滤子集合的整个层次结构

转载 作者:行者123 更新时间:2023-12-02 03:21:24 24 4
gpt4 key购买 nike

我正在使用 hibernate 并希望获得用户->帖子->评论的整个层次结构,但只有“状态”为真的评论。

我试过这样的:

Select user from User user join user.posts post join post.comments comment where comment.status = true

但这让我的用户数量激增,因为状态为 true 的评论数量在单个用户内->帖子,我有所有评论,而不仅仅是状态为 true 的评论。

我也尝试过“左连接”或“内连接”,但我得到了相同的结果。

有没有办法得到我想要的东西?哪种方法“更清洁”?

这是类结构的一个小例子:

Class User
List<Post> posts

Class Post
List<Comment> comments

Class Comment
String text
boolean status

感谢您的帮助!

最佳答案

我认为您想做的是使用 @FilterJoinTable 注释过滤集合:

@FilterJoinTable(name="activeComments", condition="status = :status")
List<Comment> comments

您需要在类级别声明过滤器:

@FilterDef(name="activeComments", parameters={
@ParamDef( name="status", type="boolean" )
})

并从 session 中启用它:

    Filter filter = session.enableFilter("activeComments");
filter.setParameter("status", true);

这是一个关于 Hibernate 过滤的教程,带有示例: http://www.concretepage.com/hibernate/hibernate-filter-and-filterjointable-annotation-example

...以及官方的 Hibernate 3 文档: https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/filters.html

关于Hibernate:获取具有过滤子集合的整个层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33106969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com