criteria级联查询 一对一但双向关联

 

 有这么一个关系映射

我需要使用ROE(降序)排列,然后再把stock查出来,然后就可以遍历得到stock在这个查询结果中的排名

 

Roe(多方)   双向   Stock    双向 Hydm

 

方案 1使用stock作为查询主体,添加hydm作为条件,然后使用roe的reportValue作为查询条件,然后再用roe的reportValue排序

不会写根据多方参数排序的语句,放弃了

方案2使用roe作为查询主题,报表日期作为条件,在添加stock作为条件,再添加stock的hydm对象最为条件,然后再用hydm的reportvalue作为参数

 

看代码

 public int stockGradingByRoe(Session session, String stockCode, String hydm, int reportYear, int reportSeason) {
      
        Criteria criteria = session.createCriteria(Roe.class, "r");
        criteria.add(Restrictions.eq("reportYear", reportYear)).add(Restrictions.eq("reportSeason", reportSeason));//报表年月
        criteria.createCriteria("stock").createCriteria("hydm").add(Restrictions.like("reportValue", hydm));//添加查询条件,用股票代码查询
        criteria.addOrder(Order.desc("r.reportValue"));//用roe的报告日期降序排列
        List<Roe> models = criteria.list();
        int k = 0;
        for (Roe model : models) {
            k++;
            if (model.getStock().getStockCode().equals(stockCode)) {
                break;
            }
        }
        return k;
    }

 

posted @ 2020-11-24 15:27  不打鱼光晒网  阅读(243)  评论(0)    收藏  举报