【问题标题】:Create criteria that ignores specific character创建忽略特定字符的标准
【发布时间】:2014-12-04 16:03:17
【问题描述】:

我想创建条件或对现有条件添加限制(我认为它必须是条件),在搜索数据时将忽略“-”。

例如,我正在搜索数字“888”,我也想获得“8-8-8”。

我有一个包含我的数字字段的 bean

A.java

@Data
public class A {
    [...]
    @Length(max = 16)
    @Column(length = 16)
    private String number; 
}

这是我的标准

    public Pair<Long, List<A>> filter(CompoundFilter filter, CompoundSort sort, int start, int count) {
        Criteria criteria = getSession().createCriteria(A.class, "a_alias");
...
}

我应该在标准中添加什么来实现我的目标?

我的另一个想法是创建一些隐藏字段(隐藏的意思是我不会在 UI 上使用的那个,只填充数据)将保存“转换”值,并且在过滤 number 时我将过滤这个字段

【问题讨论】:

  • 这似乎效率不高。可能是从数字列中计算出来的虚拟列,它删除了非数字 + 索引。
  • 你是对的,但不幸的是我必须努力做到这一点

标签: java hibernate hibernate-criteria


【解决方案1】:

尝试使用regex,模式看起来像"[0-9]-[0-9]- ... [0-9]",这里不是0-9,而是用你想要的数字构建模式。如果我正确理解了您的问题,那么这可能是一个答案。

【讨论】:

  • 我知道我可以使用正则表达式,问题是如何将它附加到条件中的字段
  • 我不知道,对不起。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2018-09-27
相关资源
最近更新 更多