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.order_updates=true` ##### 11. 统计数据生成 (Generate Statistics) - **名称**:`hibernate.generate_statistics` - **描述**:启用后,Hibernate 将收集有助于性能调优的统计数据。 - *...
例如,如果我们有一个名为`Article`的实体类,其中包含一个`title`字段,我们可以使用`@org.hibernate.annotations.OrderBy`注解来指定排序规则: ```java @Entity public class Article { @Id private Long id; ...
Hibernate允许自定义事件监听器,监听诸如保存、更新、删除等生命周期事件,从而实现特定的业务逻辑。 13. **性能优化** 优化包括合理设置缓存策略、避免N+1查询问题、批量操作、延迟加载等。理解并合理运用这些...
9. **hibernate.order_updates**:当设置为`true`时,Hibernate会按主键顺序执行更新操作,以减少死锁的可能性。 10. **hibernate.generate_statistics**:如果开启,Hibernate会收集统计信息以帮助优化性能。这些...
9. **hibernate.order_updates**:如果开启,按主键顺序排序更新操作,减少死锁的可能性。 10. **hibernate.generate_statistics**:开启统计收集,帮助分析和优化性能。 11. **hibernate.use_identifier_rollback...
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 ...
9. **hibernate.order_updates**: 开启后,Hibernate会按照主键顺序执行SQL更新,以降低并发环境下的死锁风险。 10. **hibernate.generate_statistics**: 当设置为`true`,Hibernate会收集性能统计信息,帮助优化...
12. **事件监听器**:理解Hibernate的事件模型,以及如何实现自定义的事件监听器来扩展框架功能。 13. **实体生命周期**:掌握实体从瞬态到持久态,再到托管态和脱管态的过程,以及状态转换中的方法调用。 14. **...
Hibernate.jdbc.factory_class 属性用于指定一个自定义的 Batcher。 hibernate.jdbc.use_scrollable_resultset Hibernate.jdbc.use_scrollable_resultset 属性用于控制 Hibernate 是否使用 JDBC2 的可滚动结果集。...
2. **Chapter 06 - 排序(OrderBy)**: Hibernate支持对查询结果进行排序,这部分可能讲述了如何使用`@OrderBy`注解或HQL的`ORDER BY`子句来实现动态或静态的排序功能。 3. **Chapter 07 - 组件和集合(Set)**: ...
- **功能**:自定义`org.hibernate.jdbc.Batcher`的实现类。 - **取值**:具体类名,适用于高级定制场景。 ##### 5. hibernate.jdbc.use_scrollable_resultset - **功能**:启用JDBC可滚动结果集。 - **取值**:`...
Query query = session.createQuery("FROM Soft ORDER BY fSoftname"); query.setFirstResult(start); query.setMaxResults(pageSize); return query.list(); } ``` 这里,`findPaginated`方法接受起始位置和每...
8. **order**:订单系统,可能包含订单创建、支付、取消等业务逻辑,这可能会用到Hibernate的乐观锁、悲观锁机制,以及复杂的查询和更新操作。 通过对这些文件夹的分析,我们可以深入学习以下知识点: - Hibernate...
8. **Criteria API的投影和排序**:通过Criteria API,可以设定查询结果的投影( Projection),比如选择特定字段,以及对查询结果进行排序(Order)。 9. **集合映射**:Hibernate支持多种类型的集合映射,如List...
8. `@Temporal`和`@Type`还可以配合使用自定义类型,如货币类型、邮政编码等。 三、优势与实践 使用Hibernate注解的优势在于: 1. 简化配置:注解使得代码更加整洁,无需编写XML映射文件。 2. 代码即配置:注解...
HQL 是 Hibernate 自定义的查询语言,类似于 SQL,但更面向对象。它可以方便地进行复杂查询,如 joins、group by、order by 等。 **7. Criteria 查询** Criteria 查询是一种动态构建查询的方式,提供了 API 来构建...
4. **排序**:允许用户自定义排序规则,可以提供`List<T> findByCriteria(Criteria criteria, Order[] orders)`,传入Order对象来控制排序。 5. **事务管理**:为了确保数据的一致性,通用DAO应该包含事务管理。...
10. **Hibernate事件和监听器**:允许开发者在特定的生命周期事件(如加载、保存、更新、删除)中添加自定义逻辑,通过实现相应的Listener接口。 11. **性能优化**:包括批处理(Batch Processing)、延迟加载...
- **使用自定义参数类**:可以使用自定义的参数类来传递查询参数,例如上面提到的 `Paras` 类。 ```java public class Paras { private Object pName; private int typeNo; public Object getPName() { ...
- 自定义字段:允许用户根据业务需求添加自定义字段。 在这个 Demo 中,"Test" 文件可能是用于测试的代码或者配置文件,帮助验证 Spring MVC 和 Hibernate 的整合是否成功,以及CRM系统的各项功能是否正常工作。 ...