`
lijiejava
  • 浏览: 262390 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

Hibernate 自定义Order

 
阅读更多
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);
	}
}





 DetachedCriteria dc = DetachedCriteria.forClass(User.class);
dc.addOrder(OracleOrder.getOrder("username", true));
getHibernateTemplate().findByCriteria(dc, startRowIndex,maxCountPerset);


转自: http://www.oschina.net/code/snippet_176115_17508


public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { 
		String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);  
		return " decode("+columns[0]+",'',0,to_number("+columns[0]+")) ";  
	}  
分享到:
评论

相关推荐

    Hibernate 参数配置详解

    - **示例**:`hibernate.order_updates=true` ##### 11. 统计数据生成 (Generate Statistics) - **名称**:`hibernate.generate_statistics` - **描述**:启用后,Hibernate 将收集有助于性能调优的统计数据。 - *...

    解决Hibernate中MySQL的中文排序

    例如,如果我们有一个名为`Article`的实体类,其中包含一个`title`字段,我们可以使用`@org.hibernate.annotations.OrderBy`注解来指定排序规则: ```java @Entity public class Article { @Id private Long id; ...

    Hibernate5实例程序

    Hibernate允许自定义事件监听器,监听诸如保存、更新、删除等生命周期事件,从而实现特定的业务逻辑。 13. **性能优化** 优化包括合理设置缓存策略、避免N+1查询问题、批量操作、延迟加载等。理解并合理运用这些...

    Hibernate 参数设置一览表.doc

    9. **hibernate.order_updates**:当设置为`true`时,Hibernate会按主键顺序执行更新操作,以减少死锁的可能性。 10. **hibernate.generate_statistics**:如果开启,Hibernate会收集统计信息以帮助优化性能。这些...

    hibernate 配置属性参数详情(全)

    9. **hibernate.order_updates**:如果开启,按主键顺序排序更新操作,减少死锁的可能性。 10. **hibernate.generate_statistics**:开启统计收集,帮助分析和优化性能。 11. **hibernate.use_identifier_rollback...

    Hibernate教程

    6.2.3. 自定义值类型 6.3. SQL中引号包围的标识符 6.4. 其他元数据(Metadata) 6.4.1. 使用 XDoclet 标记 6.4.2. 使用 JDK 5.0 的注解(Annotation) 7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent ...

    hibernate参数配置

    9. **hibernate.order_updates**: 开启后,Hibernate会按照主键顺序执行SQL更新,以降低并发环境下的死锁风险。 10. **hibernate.generate_statistics**: 当设置为`true`,Hibernate会收集性能统计信息,帮助优化...

    Hibernate 3.2.0 中文官方文档

    12. **事件监听器**:理解Hibernate的事件模型,以及如何实现自定义的事件监听器来扩展框架功能。 13. **实体生命周期**:掌握实体从瞬态到持久态,再到托管态和脱管态的过程,以及状态转换中的方法调用。 14. **...

    hibernate.cfg.xml中配置信息详解

    Hibernate.jdbc.factory_class 属性用于指定一个自定义的 Batcher。 hibernate.jdbc.use_scrollable_resultset Hibernate.jdbc.use_scrollable_resultset 属性用于控制 Hibernate 是否使用 JDBC2 的可滚动结果集。...

    hibernate开发与实战 源代码

    2. **Chapter 06 - 排序(OrderBy)**: Hibernate支持对查询结果进行排序,这部分可能讲述了如何使用`@OrderBy`注解或HQL的`ORDER BY`子句来实现动态或静态的排序功能。 3. **Chapter 07 - 组件和集合(Set)**: ...

    Hibernate可选配置大全

    - **功能**:自定义`org.hibernate.jdbc.Batcher`的实现类。 - **取值**:具体类名,适用于高级定制场景。 ##### 5. hibernate.jdbc.use_scrollable_resultset - **功能**:启用JDBC可滚动结果集。 - **取值**:`...

    完整Struts2 HIBERNATE实现分页

    Query query = session.createQuery("FROM Soft ORDER BY fSoftname"); query.setFirstResult(start); query.setMaxResults(pageSize); return query.list(); } ``` 这里,`findPaginated`方法接受起始位置和每...

    Hibernate项目开发宝典源码(完整版)

    8. **order**:订单系统,可能包含订单创建、支付、取消等业务逻辑,这可能会用到Hibernate的乐观锁、悲观锁机制,以及复杂的查询和更新操作。 通过对这些文件夹的分析,我们可以深入学习以下知识点: - Hibernate...

    hibernate3.3.2中文帮助文档

    8. **Criteria API的投影和排序**:通过Criteria API,可以设定查询结果的投影( Projection),比如选择特定字段,以及对查询结果进行排序(Order)。 9. **集合映射**:Hibernate支持多种类型的集合映射,如List...

    hibernate-annotation

    8. `@Temporal`和`@Type`还可以配合使用自定义类型,如货币类型、邮政编码等。 三、优势与实践 使用Hibernate注解的优势在于: 1. 简化配置:注解使得代码更加整洁,无需编写XML映射文件。 2. 代码即配置:注解...

    Hibernate开发指南PDF

    HQL 是 Hibernate 自定义的查询语言,类似于 SQL,但更面向对象。它可以方便地进行复杂查询,如 joins、group by、order by 等。 **7. Criteria 查询** Criteria 查询是一种动态构建查询的方式,提供了 API 来构建...

    本人写的Hibernate超级通用DAO

    4. **排序**:允许用户自定义排序规则,可以提供`List<T> findByCriteria(Criteria criteria, Order[] orders)`,传入Order对象来控制排序。 5. **事务管理**:为了确保数据的一致性,通用DAO应该包含事务管理。...

    hibernate开发包

    10. **Hibernate事件和监听器**:允许开发者在特定的生命周期事件(如加载、保存、更新、删除)中添加自定义逻辑,通过实现相应的Listener接口。 11. **性能优化**:包括批处理(Batch Processing)、延迟加载...

    Hibernate查询解决方案

    - **使用自定义参数类**:可以使用自定义的参数类来传递查询参数,例如上面提到的 `Paras` 类。 ```java public class Paras { private Object pName; private int typeNo; public Object getPName() { ...

    Springmvc+hibernate整合Demo

    - 自定义字段:允许用户根据业务需求添加自定义字段。 在这个 Demo 中,"Test" 文件可能是用于测试的代码或者配置文件,帮助验证 Spring MVC 和 Hibernate 的整合是否成功,以及CRM系统的各项功能是否正常工作。 ...

Global site tag (gtag.js) - Google Analytics