首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在springboot中从列表中筛选dynamodb

在springboot中从列表中筛选dynamodb
EN

Stack Overflow用户
提问于 2018-01-14 17:17:55
回答 1查看 1.7K关注 0票数 1

我有一个使用AWS DynamoDb表的Spring应用程序,该表包含这样的项列表:

代码语言:javascript
复制
@DynamoDBTable(tableName = MemberDbo.TABLENAME)
public class MemberDbo {

    public static final String TABLENAME = "Member";

    @NonNull
    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    protected String id;

    // some more parameters

    @DynamoDBAttribute
    private List<String> membergroupIds;

}

我想找到属于一个特定groupId的所有成员。在最好的情况下,我希望这样使用CrudRepository:

代码语言:javascript
复制
@EnableScan
public interface MemberRepository extends CrudRepository<MemberDbo, String> {

    List<MemberDbo> findByMembergroupIdsContaining(String membergroupIds); // actually I want to filter by ONE groupId

}

不幸的是,上面的查询不起作用(java.lang.String cannot be cast to java.util.List)

  • 对如何使用CrudRepository构建正确的查询有任何建议吗?
  • 对于如何使用Amazon或其他与Springboot兼容的方法创建查询,有什么建议吗?
  • 或者,我可以以某种方式创建一个dynamoDb索引并根据该索引进行筛选吗?
  • 还是需要以编程方式创建和维护一个包含membergroupIds和成员之间映射的新表(这会导致大量代码开销和成本)?

CrudRepository的解决方案是首选的,因为我可能在以后的版本中使用分页,而且CrudRepository很容易支持分页。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 08:40:07

如果我的理解是正确的,这看起来很容易。您使用DynamoDBMapper进行模型持久性。

您有一个成员对象,它包含一个成员群列表,您想要做的就是从数据库中检索它。如果是这样的话,使用DynamoDBMapper就可以这样做:

代码语言:javascript
复制
AmazonDynamoDB dynamoDBClient = new AmazonDynamoDBClient();
DynamoDBMapper mapper = new DynamoDBMapper(dynamoDBClient);
MemberDbo member = mapper.load(MemberDbo.class, hashKey, rangeKey);
member.getMembergroupIds();

需要替换hashKey和rangeKey。如果你没有rangeKey,你可以省略它。

DynamoDBMapper也支持开箱即用的寻呼

DynamoDBMapper是一个优秀的模型持久化工具,它具有强大的特性,使用简单,并且由于它是由AWS编写的,所以它与DynamoDB有着无缝的集成。它的创造者显然也受到了春天的影响。简而言之,我将使用DynamoDBMapper作为模型持久性,而Spring用于模型控制器之类的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48252133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档