【发布时间】:2015-05-16 22:41:07
【问题描述】:
我知道以下对字符串进行不区分大小写的搜索的方法
criterion.add(Restrictions.eq("email", email).ignoreCase());
有没有办法做到“。”不敏感搜索,即它将忽略出现在被比较的两个字符串中的任何一个中的任何点。
我不想获取电子邮件并循环进行比较。
【问题讨论】:
我知道以下对字符串进行不区分大小写的搜索的方法
criterion.add(Restrictions.eq("email", email).ignoreCase());
有没有办法做到“。”不敏感搜索,即它将忽略出现在被比较的两个字符串中的任何一个中的任何点。
我不想获取电子邮件并循环进行比较。
【问题讨论】:
我认为您的意思是在 Hibernate 中使用正则表达式,但不幸的是,hibernate 文档中没有任何内容可用于执行正则表达式查询(使用 HQL 或 Criteria 查询)。使用 sqlRestrictions 的方法可能应该更改为重载方法之一,如下所示
Restrictions.sqlRestriction("regexp_like({alias}.NODE_1, ?)", re, Hibernate.STRING)
看看它是否适合你。希望会有所帮助。如果您需要任何帮助,请告诉我
【讨论】:
我认为最好的方法是将规范化的电子邮件(不带点)与原始电子邮件一起存储,然后对给定的电子邮件进行规范化,然后通过它进行搜索
【讨论】: