博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlRestriction的使用
阅读量:6311 次
发布时间:2019-06-22

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

在Criteria查询中  

使用
sqlRestriction()方法来提供SQL语法作限定查询,作为where字句
查看官方给的例子,如下
List cats = sess.createCriteria(Cat.class) .add( Restrictions.sqlRestriction("lower({alias}.name) like lower(?)", "Fritz%", Hibernate.STRING) ).list();

直接拿着官方的代码试了下,报错,点进去看了看源代码,如下

/*** Create a restriction expressed in SQL with one JDBC parameter. Any occurrences of {alias} will be* replaced by the table alias.** @param sql The SQL restriction* @param value The parameter value* @param type The parameter type** @return The Criterion** @see SQLCriterion*/public static Criterion sqlRestriction(String sql, Object value, Type type) {return new SQLCriterion( sql, value, type );}

第一个是参数String类型,是SQL语句的条件部分,第二个参数是参数值,第三个参数是类型

根据案例和源代码,可以推断出{alias}.name中{alias}是表的别名,我用的是user表,于是根据理解,这样写了下,如下

Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.sqlRestriction(“lower({User}.name ) LIKE lower(?)", "cater%", Hibernate.STRING));

结果还是报错,把Hibernate设置成自动打印出sql语句后,sql如下

Hibernate:     select        this_.id as id0_0_,        this_.age as age0_0_,        this_.birth as birth0_0_,        this_.name as name0_0_     from        user this_     where        lower(this_).name like lower(?)

可以看到lower也被打印了出来,而且Hibernate会自动给别起别名,所以下面的形式,别名也对应不上

{User}.name  LIKE ?

于是抱着试一试的态度,改成了这样:

Criteria criteria = session.createCriteria(User.class);criteria.add(Restrictions.sqlRestriction(“{alias}.name LIKE lower(?)", "cater%", Hibernate.STRING));

 这次对了,打印的sql为

Hibernate:     select        this_.id as id0_0_,        this_.age as age0_0_,        this_.birth as birth0_0_,        this_.name as name0_0_     from        user this_     where        this_.name like ?

 看来那里还必须写成{alias},那alias究竟是什么意思呢?是别名的意思,我的理解是,hibernate把{alias}当成了通配符

标签:

原文地址:http://www.cnblogs.com/liuconglin/p/5686766.html

转载于:https://www.cnblogs.com/lp2cx/p/9576633.html

你可能感兴趣的文章
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
TreeSet的用法
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>