【问题标题】:Hibernate criteria joins multiple objects休眠条件连接多个对象
【发布时间】:2021-09-12 13:23:37
【问题描述】:

从影响我的分页的标准中检索计数时遇到问题。 我的这个关联工作正常,只是我的结果计数是错误的,例如我的数据库中有 20 个用户,但我有 60 个。

        DetachedCriteria criteria = DetachedCriteria.forClass(User.class, "user");
        criteria.createAlias("profile", "prof", Criteria.LEFT_JOIN);
        criteria.createAlias("userAgencyRole", "adminAgency", Criteria.LEFT_JOIN);
        criteria.createAlias("userAgencyRole.agency", "agency",Criteria.LEFT_JOIN);
        criteria.createAlias("userAgencyRole.role", "role",Criteria.LEFT_JOIN);
        
        
        result.setTotalRecords(userDalService.getCountFromCriteria(criteria));

对于我使用过的预测:

            ProjectionList projList = Projections.projectionList();
            projList.add(Projections.property("name"), "name");
            projList.add(Projections.property("email"), "email");
            projList.add(Projections.property("userId"), "userId");
            projList.add(Projections.property("profile"), "profile");

对此问题的任何建议

【问题讨论】:

    标签: java hibernate join hibernate-criteria


    【解决方案1】:

    如果需要,可以根据从我的 API 收到的参数调用标准别名来解决问题。所以结果不会受到关联的影响。

    【讨论】:

      【解决方案2】:

      在使用 Criteria API 时必须小心,因为默认情况下加入一对多关系不会返回不同的结果。 这是一个已知问题,有几种方法可以防止它。其中一些被讨论here

      【讨论】:

        猜你喜欢
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多