Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate:使用筛选的子集合获取整个层次结构_Hibernate_Hql - Fatal编程技术网

Hibernate:使用筛选的子集合获取整个层次结构

Hibernate:使用筛选的子集合获取整个层次结构,hibernate,hql,Hibernate,Hql,我使用的是hibernate,我希望得到用户->帖子->评论的整个层次结构,但只有那些“状态”为true的评论 我试过这样的方法: Select user from User user join user.posts post join post.comments comment where comment.status = true 但这给了我一个爆炸式的用户数量与状态为真的评论和内单用户->帖子,我有所有的评论,而不仅仅是那些与状态为真 我也尝试过“左连接”或“内部连接”,但我得到了相同的

我使用的是hibernate,我希望得到用户->帖子->评论的整个层次结构,但只有那些“状态”为true的评论

我试过这样的方法:

Select user from User user join user.posts post join post.comments comment where comment.status = 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
并从会话中启用它:

    Filter filter = session.enableFilter("activeComments");
    filter.setParameter("status", true);
以下是有关Hibernate筛选的教程,并附有示例:

…和官方Hibernate 3文档:

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