所以我一直试图在DynamoDB中存储Java Maps,但没有取得任何成功。
我一直收到以下错误
requires @DynamoDBTyped or @DynamoDBTypeConverted
现在我可以创建一个转换器,只需将地图转换为字符串,但这似乎很多工作,所以不确定我是否遗漏了一些东西,因为我不需要为List做这样的事情。
此外,如果我能够成功存储地图,Dynamo是否提供搜索特定地图键或值的方法。 例如,假设Dynamo表中的一列是一个Map,我可以说执行一个查询给我回复所有人都是> 30分钟跑马拉松不到5分钟?或者我可能需要一种不同的方法......
任何帮助都会很棒。
谢谢!
答案 0 :(得分:2)
DynamoDB记录实际上是地图,所以是的,你绝对可以在DynamoDB中存储和搜索地图。 It looks like如果您的地图不是<String, AttributeValue>
,那么您需要提供自定义转换器。您不会将整个地图转换为字符串,您可以将地图转换为Map<String, AttributeValue>
答案 1 :(得分:0)
您可以考虑的另一件事是
public class MultiTenantConnectionProviderImpl extends AbstractDataSourceBasedMultiTenantConnectionProviderImpl {
private static final long serialVersionUID = 1L;
public MultiTenantConnectionProviderImpl()
{
}
@Override
protected DataSource selectAnyDataSource()
{
return null;
}
@Override
protected DataSource selectDataSource(String tenantIdentifier) {
//This in turn makes a call to a remote service to fetch current tenant
//database details and then creates a datasource for it.
return DataSourceManager.getDataSource(tenantIdentifier);
}
@Override
public Connection getAnyConnection() throws SQLException{
//Called during server startup. Cannot do any thing as tenant is not known
// and there is no default datasource
throw new SQLException("not implemented in multi-tenant environment");
}
@Override
public void releaseAnyConnection(Connection connection) throws SQLException
{
//Called during server startup. Cannot do any thing as tenant is not known
// and there is no default datasource
throw new SQLException("not implemented in multi-tenant environment");
}
}
。基本上,这意味着您不是在使用地图而是在使用对象(而是在Dynamo中转换为具有不同数据类型的地图)