我是JPA的新手,并且陷入了一个相当简单的用例。我想要做的就是根据某些过滤器用户传递给我的应用程序,为我的条件添加一些条件。用户使用键,值对将信息传递给应用程序,我们将对其进行解码以查看每个参数的类型。
例如:
1)键= id和值= 20。我们将其解释为按id = 20搜索,其中id为整数
2)键=名称和值='测试'。我们将其解释为通过name ='test'搜索,其中name为字符串
这是通过类似方法实现的
public <T> T getSearchValue(Object inputValue) {
if (condition) {
return (T) inputValue.toString();
} else {
return (T) Integer.parseInt(inputValue.toString);
}
}
我以为我可以使用条件构建器轻松添加条件。像这样的东西
cb.equal(getSearchKey(), getSearchValue(inputValue));
cb.gt(getSearchKey(), getSearchValue(inputValue));
此处cb.equal
工作正常。但是,cb.gt
或任何其他操作,例如lessThan
,like
等,都给出了编译错误,即存在两个方法匹配项,因此模棱两可]
第一种方法是gt(Expression<? extends Number>, Expression<? extends Number>)
第二个是gt(Expression<? extends Number>, Number)
因此,如何解决这个问题并确保它可以解析为Number作为第二个参数?这里的问题是我不知道类型,因为它是根据用户要搜索的键添加的。是否可以以某种方式动态转换为类,或者这里还有其他更好的方法吗?
我是JPA的新手,并且陷入了一个相当简单的用例。我想要做的就是根据某些过滤器用户传递给我的应用程序,为我的条件添加一些条件。用户通过...
想法是为“ SQL语句”的where子句提供限制。