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);
}
}
分享到:
相关推荐
1. 确保MySQL数据库和表使用支持中文的字符集,如GBK或UTF-8。 2. 在Hibernate配置中设置正确的字符集。 3. 使用`@OrderBy`注解或自定义比较器来指定中文排序规则。 通过以上步骤,可以有效地解决MySQL数据库在...
10. **一对多、多对一、一对一和多对多关系映射**:Hibernate支持多种关联映射,包括集合映射,如List、Set、Map等,以及复合主键的处理。 11. **继承映射**:在Java中,子类可以继承父类。在Hibernate中,这种继承...
《Hibernate参考指南》是Java开发领域中不可或缺的重要资源,它详细介绍了Hibernate框架的使用方法和最佳实践。...中文版和英文版的提供,使得不同语言背景的读者都能无障碍地学习和理解Hibernate技术。
Hibernate支持懒加载(Lazy Loading),意味着关联对象不会在初始化时立即加载,而是在需要时才从数据库中获取。对于一对多或多对多关系,可以使用`@OneToMany`和`@ManyToMany`注解进行映射,并通过`fetch`属性配置...
Hibernate支持编程式事务管理和声明式事务管理,前者通过Session的beginTransaction()、commit()和rollback()方法进行控制,后者则依赖于容器(如Spring)的AOP支持。 缓存机制是Hibernate提升性能的一个关键特性,...
《Hibernate 3.3.2 中文官方文档》是一份详尽阐述 Hibernate 框架的权威指南,针对的是 Java 开发者,尤其是那些在企业级应用开发中使用 ORM(对象关系映射)技术的人群。Hibernate 是一个开源的、强大的 ORM 解决...
Hibernate支持一级缓存(Session缓存)和二级缓存。一级缓存是默认开启的,每个Session都有自己的缓存,用于提高性能。二级缓存可以跨Session共享,通常由插件如EhCache提供,适用于读多写少的场景。 ### 八、实体...
6. Native SQL:当需要充分利用数据库特定特性时,可以使用原生SQL查询,Hibernate提供了支持。 7. 一对多、多对一、多对多关系映射:这部分会讲解如何处理不同类型的关联关系,包括集合的映射和懒加载。 8. 私有...
9. **集合映射**:Hibernate支持多种类型的集合映射,如List、Set、Map等,以及一对一、一对多、多对多的关联关系映射。 10. **缓存机制**:Hibernate提供了一级缓存和二级缓存,可以提高数据读取速度并减少数据库...
在配置方面,Hibernate支持XML配置文件和基于Java的配置,开发者可以定义实体映射、数据库连接、事务策略等内容。此外,Hibernate还提供了事件监听器和拦截器机制,允许自定义操作,如在对象加载、保存或删除前后...
Hibernate支持多种实体间的关系,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)、多对多(@ManyToMany)等。这些关系可以通过关联映射来实现。 8. **级联操作** 在实体关系中,级联操作...
15.3. 结果集排序 15.4. 关联 15.5. 动态关联抓取 15.6. 查询示例 15.7. 投影(Projections)、聚合(aggregation)和分组(grouping) 15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by ...
11. **事务管理**:Hibernate支持JTA和JPA的事务管理,通过SessionFactory的openSession和beginTransaction方法开始一个事务。 12. **事件和监听器**:允许开发者在特定的持久化操作前后执行自定义逻辑,如保存前...
Hibernate支持JTA和JDBC两种事务管理方式,允许开发者根据应用需求选择合适的事务隔离级别和回滚策略。在3.1.x版本中,对事务处理的异常处理和回滚逻辑进行了细化,提高了系统的稳定性和可靠性。 七、方言支持 ...
9. **Association Mapping**: Hibernate支持多种关联映射,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)。 10. **Cascade Operations**: 可以设置级联操作,例如在...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...
9. **关联映射(Association Mapping)**:Hibernate支持多种类型的关联,如一对一(OneToOne)、一对多(OneToMany)、多对一(ManyToOne)和多对多(ManyToMany)。关联可以通过注解或XML配置。 10. **继承映射...
### hibernate4.1中文API知识点汇总 #### 1. 教程 ##### 1.1 第一部分 - 第一个Hibernate应用程序 - **设置**: 安装必要的开发环境,包括Java SDK、IDE(如Eclipse或IntelliJ IDEA)、Hibernate库等。 - **第一节...
《Hibernate v3.04中文参考手册》是Java开发者的重要参考资料,它详尽地阐述了Hibernate框架在v3.04版本中的各项功能和用法。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作...
HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...