`
stckiss
  • 浏览: 22661 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

hibernate 支持中文排序

    博客分类:
  • java
阅读更多
public class Oracle_Order extends Order implements Serializable {

	
	/**
	 * 扩展order 支持oracle 按笔划,部首,拼音排序。
	 */
	private static final long serialVersionUID = 1L;
	// SCHINESE_STROKE_M' SCHINESE_RADICAL_M'); 'NLS_SORT=SCHINESE_PINYIN_M
	private static int pinyin = 0; // 'NLS_SORT=SCHINESE_STROKE_M'
	private static int radical = 1; // SCHINESE_RADICAL_M
	private static int stroke = 2; // SCHINESE_STROKE_M
	private String propertyName;
	private int ascending = 0;
	private  int nulls = 0; //如果排序字段为空的话,空排最前。否则最后 //nulls first nulls last
	
	
	protected Oacle_Order(String propertyName, int ascending , int nulls) {
		super(propertyName, false);
		// TODO Auto-generated constructor stub
		this.propertyName = propertyName;
		this.ascending = ascending;
		this.nulls = nulls;
	}
	
	/**
	 * 只对准排序字段只有一个的情况,多个未考虑。
	 */
	public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) 
	throws HibernateException {
		String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
		String fragment = new String();
//		nlssort(name,'NLS_SORT=SCHINESE_PINYIN_M') nulls first
		if(this.ascending == 0)
			fragment =" nlssort("+ columns[0] +",'NLS_SORT=SCHINESE_PINYIN_M') nulls "+(this.nulls==0?"first":"last");
		else if(this.ascending == 1)
			fragment =" nlssort("+ columns[0] +",'NLS_SORT=SCHINESE_RADICAL_M') nulls "+(this.nulls==0?"first":"last");
		else
			fragment =" nlssort("+ columns[0] +",'NLS_SORT=SCHINESE_STROKE_M') nulls "+(this.nulls==0?"first":"last");
//		for ( int i=0; i<columns.length; i++ ) {
//			fragment.append( columns[0] ).append( ascending ? " asc" : " desc" );
//			if ( i<columns.length-1 ) fragment.append(", ");
//		}
		return fragment.toString();
	}


	public static Oacle_Order pinyu(String propertyName,int nulls)
	{
		return new Oacle_Order(propertyName,Oacle_Order.pinyin,nulls);
	}
	
	public static Oacle_Order radical(String propertyName,int nulls)
	{
		return new Oacle_Order(propertyName,Oacle_Order.radical,nulls);
	}
	
	public static Oacle_Order stroke(String propertyName,int nulls)
	{
		return new Oacle_Order(propertyName,Oacle_Order.stroke,nulls);
	}

}
2
0
分享到:
评论

相关推荐

    解决Hibernate中MySQL的中文排序

    1. 确保MySQL数据库和表使用支持中文的字符集,如GBK或UTF-8。 2. 在Hibernate配置中设置正确的字符集。 3. 使用`@OrderBy`注解或自定义比较器来指定中文排序规则。 通过以上步骤,可以有效地解决MySQL数据库在...

    hibernate 3.6 中文 chm

    10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...

    hibernate_reference中文/英文.pdf

    《Hibernate参考指南》是Java开发领域中不可或缺的重要资源,它详细介绍了Hibernate框架的使用方法和最佳实践。...中文版和英文版的提供,使得不同语言背景的读者都能无障碍地学习和理解Hibernate技术。

    hibernate4.1中文官方文档

    Hibernate支持懒加载(Lazy Loading),意味着关联对象不会在初始化时立即加载,而是在需要时才从数据库中获取。对于一对多或多对多关系,可以使用`@OneToMany`和`@ManyToMany`注解进行映射,并通过`fetch`属性配置...

    hibernate中文参考手册

    Hibernate支持编程式事务管理和声明式事务管理,前者通过Session的beginTransaction()、commit()和rollback()方法进行控制,后者则依赖于容器(如Spring)的AOP支持。 缓存机制是Hibernate提升性能的一个关键特性,...

    hibernate3中文官方文档

    《Hibernate 3.3.2 中文官方文档》是一份详尽阐述 Hibernate 框架的权威指南,针对的是 Java 开发者,尤其是那些在企业级应用开发中使用 ORM(对象关系映射)技术的人群。Hibernate 是一个开源的、强大的 ORM 解决...

    Hibernate3.6中文文档.rar

    Hibernate支持一级缓存(Session缓存)和二级缓存。一级缓存是默认开启的,每个Session都有自己的缓存,用于提高性能。二级缓存可以跨Session共享,通常由插件如EhCache提供,适用于读多写少的场景。 ### 八、实体...

    Hibernate 手册中文版chm格式

    6. Native SQL:当需要充分利用数据库特定特性时,可以使用原生SQL查询,Hibernate提供了支持。 7. 一对多、多对一、多对多关系映射:这部分会讲解如何处理不同类型的关联关系,包括集合的映射和懒加载。 8. 私有...

    hibernate3.3.2中文帮助文档

    9. **集合映射**:Hibernate支持多种类型的集合映射,如List、Set、Map等,以及一对一、一对多、多对多的关联关系映射。 10. **缓存机制**:Hibernate提供了一级缓存和二级缓存,可以提高数据读取速度并减少数据库...

    Hibernate中文Api最新参考文档

    在配置方面,Hibernate支持XML配置文件和基于Java的配置,开发者可以定义实体映射、数据库连接、事务策略等内容。此外,Hibernate还提供了事件监听器和拦截器机制,允许自定义操作,如在对象加载、保存或删除前后...

    hibernate参考手册中文版

    Hibernate支持多种实体间的关系,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)等。这些关系可以通过关联映射来实现。 8. **级联操作** 在实体关系中,级联操作...

    Hibernate+中文文档

    15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by ...

    Hibernate3.2官方中文参考手册.pdf+Hibernate.pdf(Hibernate的学习资料)

    11. **事务管理**:Hibernate支持JTA和JPA的事务管理,通过SessionFactory的openSession和beginTransaction方法开始一个事务。 12. **事件和监听器**:允许开发者在特定的持久化操作前后执行自定义逻辑,如保存前...

    hibernate 开发文档发布

    Hibernate支持JTA和JDBC两种事务管理方式,允许开发者根据应用需求选择合适的事务隔离级别和回滚策略。在3.1.x版本中,对事务处理的异常处理和回滚逻辑进行了细化,提高了系统的稳定性和可靠性。 七、方言支持 ...

    hibernate api

    9. **Association Mapping**: Hibernate支持多种关联映射,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。 10. **Cascade Operations**: 可以设置级联操作,例如在...

    HibernateAPI中文版.chm

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    hibernate中文手册

    9. **关联映射(Association Mapping)**:Hibernate支持多种类型的关联,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。关联可以通过注解或XML配置。 10. **继承映射...

    hibernate4.1中文api

    ### hibernate4.1中文API知识点汇总 #### 1. 教程 ##### 1.1 第一部分 - 第一个Hibernate应用程序 - **设置**: 安装必要的开发环境,包括Java SDK、IDE(如Eclipse或IntelliJ IDEA)、Hibernate库等。 - **第一节...

    Hibernate v3.04中文参考手册(PDF)

    《Hibernate v3.04中文参考手册》是Java开发者的重要参考资料,它详尽地阐述了Hibernate框架在v3.04版本中的各项功能和用法。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作...

    hibernate3.2中文文档(chm格式)

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

Global site tag (gtag.js) - Google Analytics