我有一个表,其中有一列field具有诸如三星手机之类的值。
我的问题是,如果我搜索字符串“Samsung”或“phone”,如何获得这一行。如果我只给出“Sam”或“ph”作为搜索词,我不想要任何结果。
我曾尝试使用 ILIKE 运算符,但如果我使用:
select *
from mytable
where title ILIKE 'Samsung';
Run Code Online (Sandbox Code Playgroud)
它不会给出任何结果,因为它认为标题应该完全相等。另外,如果我使用title ILIKE '%Samsung%'它,它将适用于任何部分字符串。
简而言之,我希望如果输入的搜索词作为整个单词存在于我的列中,则只给出搜索结果。
另外,如果我有多个搜索词值,那么任何单词匹配都应该是结果
我正在使用休眠验证器组序列,并希望根据业务规则按顺序执行组。但 groupSequenceProvider 的 getValidationGroups 输入始终为 null,因此永远不会添加自定义序列。
我的请求对象:
@GroupSequenceProvider(BeanSequenceProvider.class)
public class MyBean {
@NotEmpty
private String name;
@NotNull
private MyType type;
@NotEmpty(groups = Special.class)
private String lastName;
// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)
枚举类型:
public enum MyType {
FIRST, SECOND
}
Run Code Online (Sandbox Code Playgroud)
我的自定义序列提供者:
public class BeanSequenceProvider implements DefaultGroupSequenceProvider<MyBean> {
@Override
public List<Class<?>> getValidationGroups(MyBean object) {
final List<Class<?>> classes = new ArrayList<>();
classes.add(MyBean.class);
if (object != null && object.getType() == MyType.SECOND) {
classes.add(Special.class);
}
return classes;
}
}
Run Code Online (Sandbox Code Playgroud)
组注释:
public interface Special {
} …Run Code Online (Sandbox Code Playgroud)