2016-03-15 57 views
3

我能够在查询浏览器(我的SQL)中触发查询,并能够检索如下记录SELECT * FROM details WHERE title REGEXP 'dem';春季使用正则表达式查询与冬眠

但是当我使用类似类型的代码在服务器端的话,我是给误差意外的标记:REGEXP

在网络搜索后,似乎Hibernate不支持REGEXP。但也给出了一些与此无关的解决方案。我只需要在休眠状态下通过查询来处理这个问题。

sbQuery.append("select distinct id from deatil id"); 
sbQuery.append("where ((id.title like :keyword) OR (id.description like :keyword) "); 
+0

相关:[正则表达式在休眠查询](http://stackoverflow.com/q/5831768/4290096) –

+0

感谢这一点,但对我来说这是行不通的,因为我只需要正则表达式。我已经应用了解决方法,但这些都不符合我的要求,否则会产生更多问题。任何其他方式或建议 – OPTIMUS

回答

0

您可以在您的数据库的Hibernate方言中添加自己的custom function

我尝试添加一个比这更复杂的自定义函数,并且我有问题使其工作,希望简单的应该可以开箱即用。

0
Query query = session.createSQLQuery("select distinct id from deatil id where (id.title like :keyword) OR (id.description like :keyword)") 

.setParameter(“keyword”,keyword); 列表结果= query.list();

缺少“)”并且必须设置参数值。

+0

这不会被视为正则表达式。例如,我有一个字符串“我的ARG学生很好的支付应用程序和内容”我想搜索很好,然后我需要像循环条件。为了避免这种情况,我想使用正则表达式。总之关键字参数可以包含许多不同的关键字。 – OPTIMUS