2

我正在使用 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;

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

4

1 回答 1

1

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

回复晚了非常抱歉。我将从 ORMLite 查询生成器记录生成的查询,然后将其与您手动生成的查询进行比较。您可以productQb.prepareStatementString()在执行查询之前记录结果。有关详细信息,请参阅日志记录文档

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

于 2013-12-18T21:07:01.373 回答