或者查询不支持的spring数据dynawdb



我只是尝试使用spring数据和一些"findBy"查询进行查询。下面,我们正在调用DynamoDB数据库。

我有一个这样的界面:

import org.socialsignin.spring.data.dynamodb.repository.EnableScan;
import org.springframework.data.repository.CrudRepository;
import es.viesgo.ciegen.persistence.Parameter;
@EnableScan
public interface ParameterRepository extends CrudRepository<Parameter, String> ,  ParameterRepositoryCustom {
List<Parameter> findByParameterOrStartdatevalidityOrEnddatevalidity(String parameter, String startdatevalidity, String enddatevalidity);

但当我调用这个findBy方法时,会出现以下错误:

java.lang.UnsupportedOperationException: Or queries not supported

我在pom.xml中使用的弹簧靴的当前版本是1.5.10,弹簧数据的dynamodb是4.5.0

这些是findBy。。。或方法真的不受支持吗?有新版本的支持吗?

这有点难以判断,但Spring可能正在执行查询请求(而不是扫描或GetItem(

Query请求允许您设置KeyConditionExpression,但表达式的形成方式有一些限制。你可以在这里阅读所有的细节,但只是为了突出几个部分:

条件必须对单个分区键值执行相等测试

该条件可以选择性地对单个排序键值执行几个比较测试中的一个。

这里的主要优点是,在查询中只能使用单个分区键值和单一排序键值。这自动意味着不能支持OR,因为这需要多个值。

Query请求还允许您设置可以使用OR的FilterExpression,但是FilterExpression在KeyConditionExpression之后应用,换句话说,在已经从磁盘读取项目之后应用。

最新更新