- import org.hibernate.Criteria;
- import org.hibernate.HibernateException;
- import org.hibernate.criterion.CriteriaQuery;
- import org.hibernate.criterion.Order;
- /**
- * Oracle数据库中文排序
- *
- */
- public class OracleOrder extends Order {
- private static final long serialVersionUID = -7866385945784052610L;
- private String propertyName;
- private boolean ascending;
- protected OracleOrder(String propertyName, boolean ascending) {
- super(propertyName, ascending);
- this.propertyName = propertyName;
- this.ascending = ascending;
- }
- /**
- * 只考虑按一个字段排序的情况
- */
- public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)
- throws HibernateException {
- String[] columns = criteriaQuery.getColumnsUsingProjection(criteria,
- propertyName);
- return " nlssort(" + columns[0] + ",'NLS_SORT=SCHINESE_PINYIN_M') "
- + (ascending ? "" : "desc");
- }
- public static OracleOrder getOrder(String propertyName, boolean ascending) {
- return new OracleOrder(propertyName, ascending);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/040520149425.html
来源: http://www.codesnippet.cn/detail/040520149425.html