我只是尝试使用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 ...方法是否真的不受支持?是否有支持此功能的较新版本?
答案 0 :(得分:0)
很难说,但是Spring可能会执行查询请求(与Scan或GetItem相对)
查询请求允许您设置KeyConditionExpression,但是表达式的形成方式受到一些限制。您可以阅读所有详细信息here,但仅突出几个部分:
条件必须对单个分区键值执行相等性测试
该条件可以选择对单个排序键值执行多个比较测试之一。
这里的主要收获是,您只能在查询中使用单个分区键值和单个排序键值。这自动意味着不能支持OR,因为这将需要多个值。
查询请求还允许您设置一个可以使用OR的FilterExpression,但是在KeyConditonExpression(换句话说,已经从磁盘中读取该项目)之后应用FilterExpression。