或查询不支持Spring Data dynamodb

时间:2018-08-06 09:28:33

标签: java spring spring-boot amazon-dynamodb

我只是尝试使用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中用于spring-boot的当前版本是1.5.10,而spring-data-dynamodb是4.5.0

这些findBy ... Or ...方法是否真的不受支持?是否有支持此功能的较新版本?

1 个答案:

答案 0 :(得分:0)

很难说,但是Spring可能会执行查询请求(与Scan或GetItem相对)

查询请求允许您设置KeyConditionExpression,但是表达式的形成方式受到一些限制。您可以阅读所有详细信息here,但仅突出几个部分:

  

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

     

该条件可以选择对单个排序键值执行多个比较测试之一。

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

查询请求还允许您设置一个可以使用OR的FilterExpression,但是在KeyConditonExpression(换句话说,已经从磁盘中读取该项目)之后应用FilterExpression。