我有两个名为Country和State的表。 如何通过映射关系获取国家信息。 这是我的代码:
@DynamoDBTable(tableName = "cd_country2")
public class Country implements Serializable {
private static final long serialVersionUID = 5698425418072128936L;
@DynamoDBAutoGeneratedKey
@DynamoDBHashKey
private String countryId;
private String countryCode;
private String countryName;
private Long isActive;
}
@DynamoDBTable(tableName = "cd_state2")
public class State implements Serializable {
private static final long serialVersionUID = -7289597915417184960L;
@DynamoDBAutoGeneratedKey
@DynamoDBHashKey
private String stateId;
@DynamoDBRangeKey
private String countryId;
private String stateCode;
private String stateName;
private Long isActive;
}
答案 0 :(得分:0)
在您的申请中,一个州可以在多个国家/地区吗?如果没有那么就没有必要使countryId成为rangeKey。这样的事情应该有效:
@DynamoDBHashKey
private String stateId;
// attributes
private String countryId;
private String stateCode;
private String stateName;
private Long isActive;
给定一个stateId,你可以从你的" cd_state2"中找到它所属的countryId。表
另一方面,我建议使用这样的架构:
HashKey: countryId
RangeKey: stateId
Attributes: stateCode, stateName, isActive
然后在此表的顶部构建一个GSI:
HashKey: stateId
因此,假设stateId在整个国家/地区是唯一的,给定一个State,您可以通过在GSI表上执行GET来找到其Country。另外,给定countryId,您可以通过查询基表来查找其中的所有状态。