发现hibernate不支持mysql里按照中文字段排序
criteria.addOrder(Order.asc("userName"));不管用
网上查了半天,也没有找到:
只有这个:详情参考:http://raywithu.iteye.com/blog/1139332
后来找到了我之前找到的答案:http://aubergine-kang.iteye.com/admin/blogs/1187725、
后记:
今天又碰到了排序的问题,米有办法啦,只能再次调查,本来抱着试试看的心态发现
http://raywithu.iteye.com/blog/1139332
写的工具GBKOrder真的有用,感谢分享~
后记2:
碰到程序中使用query的session
.createQuery(hql)
备注:hql和sql可是不一样的。那么解决方法:
http://hi.baidu.com/flora_ke/blog/item/41a51ecbee5bab4af21fe791.html
那么总结一下:
1.http://raywithu.iteye.com/blog/1139332里使用的是创建criteria
2.http://aubergine-kang.iteye.com/admin/blogs/1187725使用的是在hibernate使用sql语句(session.createSQLQuery(sql))
3. http://hi.baidu.com/flora_ke/blog/item/41a51ecbee5bab4af21fe791.html
在hibernate使用的是hql(session .createQuery(hql))
大家各取所需啊~
那么现在,在这个程序中三个都用到了:
第一个只需要在sql语句添加:“select * from user order by convert(name useing gbk)”即可;
第二个,需要写一个GbkOrder类添加到当前项目中,继承Order,并重写,在session.creatCriteria的时候:criteria.addOrder(GBKOrder.asc("name"));
第三个,需要写一个MySQL5LocalDialect 类添加到当前项目中,继承MySQL5Dialect ,并重写,在session.creatQuery的时候:“ from User order by convert(name,'GBK')”
转自:http://aubergine-kang.iteye.com/blog/1243564
分享到:
相关推荐
criteria.addOrder(Order.asc("creationDate")); ``` 4. 使用投影进行聚合操作: ```java ProjectionList projections = Projections.projectionList(); projections.add(Projections.count("id"), ...
criteria.addOrder(Order.asc("username")); ``` 6. **关联查询(Joins)** - `createCriteria()`方法可以用于创建子查询,处理多对一、一对多等关联关系。 ```java criteria.createCriteria("roles").add...
criteria.addOrder(Order.asc("username")); ``` 分页查询则可以通过`setFirstResult(int firstResult)`和`setMaxResults(int maxResults)`实现。例如,获取第10到20条记录: ```java criteria.setFirstResult(10)...
criteria.addOrder(Order.asc("creationDate")); ``` 4. **分组和聚合**: ```java criteria.setProjection(Projections.groupProperty("country")); criteria.setProjection(Projections.count("id")); ``` ...
4. **排序**:使用`Criteria.setOrder()`或`Criteria.addOrder()`可以设置查询结果的排序方式,如升序(`Order.asc()`)和降序(`Order.desc()`)。例如,按照用户名降序排列: ```java Criteria crit = session....
criteria.addOrder(Order.asc("username")); ``` 5. **分组(GroupBy)和聚合函数(Projections)** Criteria API也支持分组和聚合操作。通过调用setGroupBy()方法进行分组,使用Projections类的聚合函数,如...
criteria.addOrder(Order.asc("name")); // 同上 ``` 7. **Join查询** Hibernate支持内连接、外连接等,例如: ```java // HQL query = session.createQuery("from User u join fetch u.addresses where u....
criteria.addOrder(Order.asc("id")); ``` 这段代码表示查询username为"admin"的User,并按照id升序排列。 3. 分页查询:使用setFirstResult(int firstResult)和setMaxResults(int maxResults)方法可以实现分页查询...
criteria.addOrder(Order.asc("name")); criteria.setFirstResult(startIndex); criteria.setMaxResults(pageSize); List result = criteria.list(); // 关闭会话 session.close(); // 返回分页结果 return ...
criteria.addOrder(Order.asc("postTime")); List<Blog> blogs = session.createCriteria(Blog.class) .add(Subqueries.propertyIn("id", criteria)) .setFirstResult((pageNumber - 1) * pageSize) ....
criteria.addOrder(Order.asc("createTime")); ``` 这个例子中,我们创建了一个针对`User`类的查询,筛选出username为"testUser"的用户,并按照`createTime`字段升序排列。 **5. DetachedCriteria 结合Session执行...
- **设置排序**:通过`addOrder(Order.asc("field"))`或`addOrder(Order.desc("field"))`方法设置升序或降序排序。 - **设置联合查询的抓取模式**:使用`setFetchMode(String field, FetchMode mode)`设置联合查询的...
3. **指定排序**:如果需要对结果进行排序,可以使用Criteria的addOrder(Order order)方法,Order接口提供了asc(升序)和desc(降序)方法。 4. **分页查询**:对于分页需求,我们可以使用Criteria的setFirstResult(int...
Order.asc(order.getProperty()) : Order.desc(order.getProperty())); } } return new PageImpl(c.list(), pageable, session.createCriteria(User.class).list().size()); } } ``` 在这个例子中,我们创建...