Hibernate Query通过Regex表达式过滤

时间:2015-09-28 13:48:01

标签: java mysql regex hibernate hql

我有一个具有模式列的实体。根据哪个模式匹配给定字符串,找到现有记录的最佳方法是什么?

例如:

表记录

| ID | pattern |
| 1  | /actions/{action-id:\d+}/{type-id:\d+}/{edge:[a-z][\w]+}/draft |,
| 2  | /actions/{action-id:\d+}/{edge:[a-z][\w]+}/submit |,
| 3  | /actions/{action-id:\d+}/{type-id:\d+}/{edge:[a-z][\w]+}/request |,
| 4  | /actions/{action-id:\d+}/{edge:[a-z][\w]+}/request |,
| 5  | /actions/{action-id:\d+}/{edge:[a-z][\w]+}/terminate |

输入字符串

/actions/1/send/request

这将返回带有Action的{​​{1}}记录,因为模式ID = 4与输入字符串匹配。

实现这一目标的最佳方法是什么?

  

注意:保证输入字符串只匹配一个   表中的模式

感谢。

1 个答案:

答案 0 :(得分:0)

您可以像这样添加SQL限制

Criteria criteria ...

criteria.add(Restrictions.sqlRestriction(theInputString+" REGEXP pattern")