JPA CriteriaBuilder-如何向标准中添加具有不同动态类型的参数?通话歧义错误

问题描述 投票:0回答:1

我是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或任何其他操作,例如lessThanlike等,都给出了编译错误,即存在两个方法匹配项,因此模棱两可]

第一种方法是gt(Expression<? extends Number>, Expression<? extends Number>)第二个是gt(Expression<? extends Number>, Number)

因此,如何解决这个问题并确保它可以解析为Number作为第二个参数?这里的问题是我不知道类型,因为它是根据用户要搜索的键添加的。是否可以以某种方式动态转换为类,或者这里还有其他更好的方法吗?

我是JPA的新手,并且陷入了一个相当简单的用例。我想要做的就是根据某些过滤器用户传递给我的应用程序,为我的条件添加一些条件。用户通过...

java jpa spring-data-jpa hibernate-criteria jpa-2.1
1个回答
0
投票

想法是为“ SQL语句”的where子句提供限制。

© www.soinside.com 2019 - 2024. All rights reserved.