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...

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

Nulls first和nulls last是Oracle Order by支持的语法 如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc ...

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

如果Database是Oracle,使用 from tables  t  order by  t.b  asc null last 如果是MySQL from tables  t   order by...

last指令的实现,开发项目实例

  • 2010年01月25日 19:34
  • 112KB
  • 下载

用Python实现应用Last-Modified和ETag避免下载重复内容

用Python实现应用Last-Modified和ETag避免下载重复内容 Http 1.1中避免重复下载的标记 使用Http1.1中定义好的头信息来避免重复下载,参考HTTP/1.1...

【分析函数】使用分析函数LAST_VALUE或11g LAG实现缺失数据填充及其区别

转载自:http://blog.chinaunix.net/uid-7655508-id-3736949.html  在“使用Partitioned Outer Join实现稠化报表”这篇文章中...

[leetcode]Length of Last Word (求最后一个单词的长度 C语言实现)

Length of Last Word Given a string s consists of upper/lower-case alphabets and empty space charac...

自己动手重新实现LINQ to Objects: 11 - First,Last,Single以及它们带有OrDefault的重载

本文翻译自Jon Skeet的系列博文“Edulinq”。 本篇原文地址: http://msmvps.com/blogs/jon_skeet/archive/2010/12/29/rei...

Unix/Linux编程实践教程–last在Ubuntu 14.04的实现

有了上篇关于ac的实现,对于这个last的实现过程就是很简单了。首先 man 1 last。描述中写着last looks through the file wtmp (which records a...
  • stc_XC
  • stc_XC
  • 2017年06月08日 10:12
  • 150

Last.fm歌曲榜单的MapReduce实现

本篇文章将结合一个实例来看看Mapper/Reducer代码构建思路   Last.fm是一个音乐社区网站,需要根据用户的收听记录生成不同种类的歌曲榜单,用户数据主要有以下两个来源: l   用户在自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate实现NULLS LAST
举报原因:
原因补充:

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