2013-10-09 2 views
2

ormlite 버전 4.46을 사용하고 있습니다. 원시 쿼리를 실행할 때 원하는 결과를 얻을 수 있지만, ormlite에서 시도 할 때 결과가 null 일 수 있습니다. 내가 실수를하고있는 곳을 설명해주십시오.Ormlite (JOINS, GROUPBY)에 대한 원시 쿼리

발췌문 :

  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(); 

답변

1

... 나에게 내가 실수를하고 위치를 알

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; 

청춘을 ormlite하기 원하는 결과 .... 이제 를 제공 전 ormlite 버전 4.46을 사용하고 있습니다. 원시 쿼리를 실행할 때 원하는 결과를 얻을 수 있지만 어떻게 든 결과는 null입니다. ormlite의 누군가가 누군가 내가 실수를하고 있다고 설명 할 수 있습니까?

죄송합니다. ORMLite 쿼리 빌더에서 생성 된 쿼리를 기록한 다음 손으로 생성 한 쿼리와 비교합니다. 쿼리를 수행하기 전에 productQb.prepareStatementString()의 결과를 기록 할 수 있습니다. 자세한 내용은 logging documentation을 참조하십시오.

ORMLite가 잘못된 작업을하고 있는지 알려주세요.