hibernate实现NULLS LAST

转载 2015年07月23日 10:22:27

关于 hibernate 查询中实现order by的 NULLS LAST 和 NULLS FIRST

 1:创建一个CustomNullsFirstInterceptor类
 

package com.jnpm.util;

import org.apache.tools.ant.util.StringUtils;
import org.hibernate.EmptyInterceptor;

import com.sun.org.apache.commons.logging.Log;
import com.sun.org.apache.commons.logging.LogFactory;

public class MyNullsFirstInterceptor extends EmptyInterceptor {

    private static final long serialVersionUID = 1L;

        private final Log logger = LogFactory.getLog(getClass());  

        private static final String ORDER_BY_TOKEN = "order by";

        public String onPrepareStatement(String sql) {  
            int orderByStart = sql.toLowerCase().indexOf(ORDER_BY_TOKEN);  
            boolean isNeedFixNullFirst = orderByStart > -1;  
            if (!isNeedFixNullFirst) {  
                return super.onPrepareStatement(sql);  
            }  

            sql = StringUtils.replace(sql, " DESC ", " DESC NULLS LAST ");  
            sql = StringUtils.replace(sql, " DESC)", " DESC NULLS LAST)");  
            sql = StringUtils.replace(sql, " ASC ", " ASC NULLS LAST ");  
            sql = StringUtils.replace(sql, " ASC)", " ASC NULLS LAST)");

            logger.debug(sql);  
            return super.onPrepareStatement(sql);
        }

}

2:加入配置
applicationContext.xml

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocations">
            <list>
            <value>classpath:*.cfg.xml</value>
            </list>
        </property>
        <property name="entityInterceptor">
            <bean id="myNullsFirstInterceptor"              class="com.jnpm.util.MyNullsFirstInterceptor" />
      </property>
    </bean>

原文:http://czpae86.iteye.com/blog/1574915

order by 语句对null字段的默认排序

转自:http://m.blog.csdn.net/article/details?id=6554168 在使用order by语句进行查询结果排序时,不同的数据库对于被排序字段数据行为null...
  • z69183787
  • z69183787
  • 2017年04月12日 10:34
  • 1117

Oracle 排序中使用nulls first 或者nulls last 语法

Nulls first和nulls last是Oracle Order by支持的语法 如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc ...
  • shipeng22022
  • shipeng22022
  • 2014年05月14日 09:34
  • 15243

hql 的OrderBy查询Asc将null字段放在最后,Desc将null字段放在最前

如果Database是Oracle,使用 from tables  t  order by  t.b  asc null last 如果是MySQL from tables  t   order by...
  • kaidishi
  • kaidishi
  • 2013年10月12日 14:54
  • 2636

Hibernate的order by遇到null致数据丢失的问题

Hibernate中可能用到两张(或更多)表映射称为复杂一点的对象的情形,例如每个User(用户)对象关联一个LoginInfo(登录信息)对象,LoginInfo还包括各种属性,例如LastLogi...
  • SpbDev
  • SpbDev
  • 2016年08月10日 10:38
  • 715

jpa nulls last 不起作用

List orders = new ArrayList(); Sort.Order orderRepostTime = new Sort.Order(Sort.Direction.AS...
  • u011164906
  • u011164906
  • 2017年07月14日 17:09
  • 326

hibernate实现NULLS LAST

关于 hibernate 查询中实现order by的 NULLS LAST 和 NULLS FIRST 1:创建一个CustomNullsFirstInterceptor类  package co...
  • qichangleixin
  • qichangleixin
  • 2015年07月23日 10:22
  • 1576

sql中对于null的处理方法

1、缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前   2、使用nvl函数 nvl函数可以将输入参数为空时转换...
  • ding273371187
  • ding273371187
  • 2014年11月06日 00:06
  • 883

Oracle 排序中使用nulls first 或者nulls last 语法

-原理 Nulls first和nulls last是Oracle Order by支持的语法 如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是a...
  • zhangdaiscott
  • zhangdaiscott
  • 2014年04月03日 14:53
  • 1953

Mysql --nulls first(last)的替代方法

创建一个表包含null值mysql> select * from incr_order; +------+ | id | +------+ | 3 | | 1 | | 5 | |...
  • ashic
  • ashic
  • 2016年08月06日 21:52
  • 2463

order by 语句对null字段的默认排序

在使用order by语句进行查询结果排序时,不同的数据库对于被排序字段数据行为null的情况,处理方式有所不同,这里我们主要考虑oracle和MySQL数据库。 首先我们直接给出结论: ...
  • qq348843576
  • qq348843576
  • 2017年05月08日 22:39
  • 208
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate实现NULLS LAST
举报原因:
原因补充:

(最多只允许输入30个字)