日期:2014-05-20  浏览次数:20855 次

hibernate查询的问题
一个hibernate的查询我这样写的

private DetachedCriteria getDetachCriteria(SearchForm sf)
{
String category = sf.getCategory();

DetachedCriteria detachCri = DetachedCriteria
.forClass(getClassByCategory(category));


if (!"all".equals(sf.getType()) && !"".equals(sf.getType()))
{
detachCri.add(Restrictions.eq("type", sf.getType()));
}
if (sf.getName() != null && !sf.getName().equals(""))
{
detachCri.add(Restrictions.like("name", sf.getName(),
MatchMode.ANYWHERE));
}
if (sf.getStandard() != null && !sf.getStandard().equals(""))
{
detachCri.add(Restrictions.like("standard", sf.getStandard(),
MatchMode.ANYWHERE));
}

/** **********set order by**************** */
String orderBy = sf.getOrderBy();
if (HOT.equals(orderBy))
{
detachCri.addOrder(Order.desc(HOT));
} else if (ADD_DATE.equals(orderBy))
{  
detachCri.addOrder(Order.desc(ADD_DATE));
} else if (VIP_PRICE.equals(orderBy))
{
detachCri.addOrder(Order.desc(VIP_PRICE));
} else
{
detachCri.addOrder(Order.desc(PRICE));
}
return detachCri;
}

在mysql里面能用,但在mssql里面说是orderby中的东西不包含在groupby或者select中,请问各位大哥,怎么把groupby 语句加进去呢,
如果是用Projections.groupProperty这个的话,那个DetachedCriteria detachCri = DetachedCriteria.forClass(getClassByCategory(category)); 里面的class又不包含hot、price这几个属性
希望各位大侠不吝赐教……

------解决方案--------------------
orderby中的东西不包含在groupby或者select中,是不是你的程序有问题哦
你把最终的SQL执行语句复制出来看看嘛
------解决方案--------------------
SQL语句的毛病 打印看看
------解决方案--------------------
orderby中的东西不包含在groupby或者select中

因为你orderby要有个参照,比如说参照ID,按照ID来排序,如果你在查询的时候没有
查询出ID来,就没办法按照orederby来排序了!
------解决方案--------------------
探讨
select count(*) as y0_ from digital this_ inner join product this_1_ on this_.id=this_1_.id order by this_1_.price desc
这个是用了orderby的语句
这个在mysql里面是能的,在mssql里面不行