【问题标题】:Raw query to Ormlite (JOINS,GROUPBY) correct way对 Ormlite (JOINS,GROUPBY) 的原始查询正确方法
【发布时间】:2013-10-09 12:46:11
【问题描述】:

我正在使用 ormlite 4.46 版,当我运行原始查询时,我能够获得所需的结果,但是当我在 ormlite 中尝试时,结果不知何故为空,有人可以解释我在哪里犯了错误。

片段:

           String query=
                "SELECT Products.* FROM "+DBConst.TABLE_PRODUCTS
                        +" INNER JOIN "+DBConst.TABLE_OFFERS_MAPPING
                        +" ON Products."+DBConst.PROD_ID+" = OffersMapping."+DBConst.OFFERS_PRODUCT_ID
                        +" WHERE "+DBConst.OFFERS_OFFER_ID+ " = "+offerId+
                        " GROUP BY "+DBConst.PROD_PARENT_PRODVAR_ID;

        GenericRawResults<Product> rawResults = productDao.queryRaw(query, productDao.getRawRowMapper());

        //produces this query:SELECT Products.* FROM Products INNER JOIN OffersMapping ON Products._id = OffersMapping.product_id WHERE offer_id = 141 GROUP BY variant_id
        List<Product> prodList = rawResults.getResults();

        rawResults.close();

给了我想要的结果.... 现在到ormlite

    Dao<Product, String> productDao = helper.getProductDao();

    Dao<OfferMapping, String> offerMappingDao = helper.getOfferMappingDao();

    try {

        QueryBuilder<Product, String> productQb = productDao.queryBuilder();
        QueryBuilder<OfferMapping, String> offerQb = offerMappingDao.queryBuilder();
        //to sort the offer id accordingly
        offerQb.where().eq(DBConst.OFFERS_OFFER_ID, offerId);

        productQb.where().eq(DBConst.PROD_ID, new ColumnArg(DBConst.OFFERS_PRODUCT_ID));

        productQb.join(offerQb);

        productQb.groupBy(DBConst.PROD_PARENT_PRODVAR_ID); 

        Constants.showLog("Query", "Query is "+productQb.query());//gets null here

        List<Product> prodList = productQb.query();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return null;

不知道我在哪里犯错......

【问题讨论】:

    标签: android sqlite ormlite


    【解决方案1】:

    我正在使用 ormlite 4.46 版,当我运行原始查询时,我能够获得所需的结果,但是当我在 ormlite 中尝试时,结果不知何故为空,有人可以解释我在哪里犯了错误。

    抱歉回复晚了。我将从 ORMLite 查询生成器记录生成的查询,然后将其与您手动生成的查询进行比较。您可以在执行查询之前记录productQb.prepareStatementString() 的结果。如需更多信息,请参阅logging documentation

    如果 ORMLite 做错了什么,请告诉我。

    【讨论】:

      猜你喜欢
      • 2019-02-25
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多