|
Firstly I wrote a query as bellow:
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @SuppressWarnings("unused") final String curTime = f.format(new Date()); List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { StringBuffer sb = new StringBuffer(); sb .append("from PromoRuleDO rule, RuleProRefDO pro,PromoActiveDO active where rule.activityId = active.id and (active.type = 0 or active.type = 3) and active.status = 0 and active.sdatetime <= ? and active.edatetime >= ? and (rule.productRefType = 0 or (rule.id = pro.ruleid and pro.productid = ?))"); Query query = session.createQuery(sb.toString()); query.setParameter(0, new Date()); query.setParameter(1, new Date()); query.setParameter(2, productId); List list = query.list(); return list; }
});
Secondly,the hibernate generated sql : select promoruled0_.ID as ID100_0_, ruleproref1_.ID as ID104_1_, promoactiv2_.ID as ID101_2_, promoruled0_.VERSION as VERSION100_0_, promoruled0_.PROMO_TYPE as PROMO3_100_0_, promoruled0_.PRO_MIN as PRO4_100_0_, promoruled0_.ORDER_MIN as ORDER5_100_0_, promoruled0_.RULE_TYPE as RULE6_100_0_, promoruled0_.DECREASE as DECREASE100_0_, promoruled0_.DISCOUNT as DISCOUNT100_0_, promoruled0_.SCORE as SCORE100_0_, promoruled0_.SCORE_MULTIPLE as SCORE10_100_0_, promoruled0_.FARE_DECREASE as FARE11_100_0_, promoruled0_...NOFREE_AREA_IDS as NOFREE12_100_0_, promoruled0_.NOFREE_AREA_NAMES as NOFREE13_100_0_, promoruled0_.COUPONBATCHID as COUPONB14_100_0_, promoruled0_.COUPONFOLIO as COUPONF15_100_0_, promoruled0_.SDATETIME as SDATETIME100_0_, promoruled0_.EDATETIME as EDATETIME100_0_, promoruled0_.STATUS as STATUS100_0_, promoruled0_.ACTIVITY_ID as ACTIVITY19_100_0_, promoruled0_.USERLEVEL as USERLEVEL100_0_, promoruled0_.PRODUCTREFTYPE as PRODUCT21_100_0_, promoruled0_.SEQUENCE as SEQUENCE100_0_, ruleproref1_.VERSION as VERSION104_1_, ruleproref1_.ITEMID as ITEMID104_1_, ruleproref1_.PRODUCTID as PRODUCTID104_1_, ruleproref1_.RULEID as RULEID104_1_, promoactiv2_.VERSION as VERSION101_2_, promoactiv2_.NAME as NAME101_2_, promoactiv2_.TYPE as TYPE101_2_, promoactiv2_.SDATETIME as SDATETIME101_2_, promoactiv2_.REMOVE_ACTIVE_TIME as REMOVE6_101_2_, promoactiv2_.STOREID as STOREID101_2_, promoactiv2_.EDATETIME as EDATETIME101_2_, promoactiv2_.STATUS as STATUS101_2_, promoactiv2_.DESCRIPTION as DESCRIP10_101_2_, promoactiv2_.GOODSID as GOODSID101_2_, promoactiv2_.GOODS_CODE as GOODS12_101_2_, promoactiv2_.GOODS_NAME as GOODS13_101_2_, promoactiv2_.QUALIMIT as QUALIMIT101_2_, promoactiv2_.P_QUALIMIT as P15_101_2_, promoactiv2_.ISBUY as ISBUY101_2_, promoactiv2_.ISUSECOUPON as ISUSECO17_101_2_, promoactiv2_.PRICE as PRICE101_2_, promoactiv2_.SECKILLSTATE as SECKILL19_101_2_, promoactiv2_.MLEVELTYPE as MLEVELTYPE101_2_, promoactiv2_.RULETYPE as RULETYPE101_2_, promoactiv2_.SNATCH_PRICE_TYPE as SNATCH22_101_2_, promoactiv2_.BUYWAYTYPE as BUYWAYTYPE101_2_ from T_PROMO_RULE promoruled0_, T_RULE_PRO_REF ruleproref1_, T_PROMO_ACTIVE promoactiv2_ where promoruled0_.ACTIVITY_ID=promoactiv2_.ID and (promoactiv2_.TYPE=0 or promoactiv2_.TYPE=3) and promoactiv2_.STATUS=0 and promoactiv2_.SDATETIME<='2014-05-05 10:38:43' and promoactiv2_.EDATETIME>='2014-05-05 10:38:43' and (promoruled0_.PRODUCTREFTYPE=0 or promoruled0_.ID=ruleproref1_.RULEID and ruleproref1_.PRODUCTID=552)
Pay attention to this row: promoruled0_...NOFREE_AREA_IDS as NOFREE12_100_0_, There are two three dot.
The PromoRuleDO entity mapping section as below: <property name="fareDecrease" type="java.lang.Double"> <column name="FARE_DECREASE" precision="10"> <comment>减少运费金额</comment> </column> </property> <property name="noFreeAreaIds" type="java.lang.String"> <column name="NOFREE_AREA_IDS"> <comment>不减免地区</comment> </column> </property> <property name="noFreeAreaNames" type="java.lang.String"> <column name="NOFREE_AREA_NAMES"> <comment>不减免地区</comment> </column> </property>
It looks no any error.
|