博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展hibernate Criteria的Order使其支持sql片段(oracle)
阅读量:4214 次
发布时间:2019-05-26

本文共 828 字,大约阅读时间需要 2 分钟。

       Criteria的Order功能简洁,只支持按照某个属性(字段)的排序,如果想要实现order by min(id) 这样的应用场景就没戏儿了,起初我想用interceptor的onPrepareStatement()修改sql,但受困于spring管理事务,如用interceptor就得所用的session都使用interceptor,而不能做到灵活使用。我们知道projection和Restrictions都支持嵌入某个sql片段,我们就参照他们实现一个吧具体代码如下:public class UDOrder extends Order {

private String sql;		/**	 * 	 */	private static final long serialVersionUID = 6069765923185860527L;	public UDOrder(String propertyName, boolean ascending) {		super(propertyName, ascending);		this.sql = propertyName;	}		@Override	public String toString() {				return sql;	}	@Override	public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)			throws HibernateException {				return StringHelper.replace( sql, "{alias}", criteriaQuery.getSQLAlias(criteria) );	}		public static Order sql(String sql){				return new UDOrder(sql, true);	}		}

 

转载地址:http://qmdmi.baihongyu.com/

你可能感兴趣的文章
蓝桥杯2014_3 李白打酒
查看>>
C++提供的全排列
查看>>
蓝桥杯 2014_5 打印图形 递归
查看>>
蓝桥杯 2014_7 六角填数(任意数全排列)
查看>>
蓝桥杯 2014_8
查看>>
蓝桥杯2014_9 地宫取宝
查看>>
HDOJ 1078 记忆化搜索
查看>>
蓝桥杯 2015_7 牌型种数
查看>>
蓝桥杯 2015_9 矩阵快速幂 + 动态规划
查看>>
基于 蓝桥杯 2016_5 抽签 派往星球填空题的思考 dfs
查看>>
蓝桥杯 2016_6 方格填数(dfs)
查看>>
蓝桥杯2016_7 剪邮票(dfs判断连通性) + 全排列
查看>>
蓝桥杯 2016_8 四平方和
查看>>
蓝桥杯 2017_4 分割方格(巧妙的dfs)
查看>>
c/c++实现字符串分隔split
查看>>
蓝桥杯 2017_7 日期问题(c与c++知识学习)
查看>>
扩展欧几里得求逆元、中国剩余定理
查看>>
蓝桥杯 2017_9 包子问题
查看>>
蓝桥杯2017_10 k倍区间
查看>>
贪心 : 51nod 活动安排(活动选房间)
查看>>