2017-01-12 4 views
1
@DynamoDBTable(tableName = "OrderDashboardMetadata") 
public class OrderDashBoardMetaData { 

private int position; 
private Date ETA = null; 
private List<String> notes; 

@DynamoDBHashKey(attributeName = "queueName") 
private String queueName; 

@DynamoDBRangeKey(attributeName = "orderId") 
private String orderId; 

@DynamoDBIndexHashKey(globalSecondaryIndexName = "city") 
private String city; 

@DynamoDBIndexRangeKey(globalSecondaryIndexName = "city") 
private String fcId; 

@DynamoDBIndexHashKey(globalSecondaryIndexName = "orderState") 
private String orderState; 

@DynamoDBAttribute(attributeName = "action") 
private String action; 

@DynamoDBAttribute(attributeName = "createdTime") 
private Date createdTime = new Date(); 

@DynamoDBAttribute(attributeName = "updatedTime") 
private Date updatedTime = new Date(); 

ПриветDynamoDB принести запрос,

У меня есть структуру таблицы, как показано выше. Что бы запрос для выборки только результаты, которые имеют

1) ИмяОчереди -> PFS
2) ETA -> больше, чем первый джан 2017
3) государственный заказ - ПО

НЕЗЛОЕ предложите полный запрос для вышеуказанного сценария в JAVA.

ответ

0

Поскольку вы не аннотированных так предполагая, ETA также DDBAttribute

Map<String, AttributeValue> expValues = new HashMap<>(); 
expValues.put(":hv", new AttributeValue("PFS")); 
expValues.put(":osv", new AttributeValue("PO")); 
expValues.put(":etav", new AttributeValue("2017-01-01")); 

QueryRequest q = new QueryRequest("OrderDashboardMetadata"); 
q.setKeyConditionExpression("queueName = :hv"); 
q.setFilterExpression("orderState = :osv and ETA > :etav"); 
q.setExpressionAttributeValues(expValues); 
QueryResult r = dbClient.query(q); 

Примечание: Даты сохраняются в виде S (тип строки). Значения даты сохраняются как форматированные строки ISO-8601.

+0

Спасибо, это сработало – sid297

+1

upvote и принять хороший способ сказать спасибо, также поможет другим. –

 Смежные вопросы

  • Нет связанных вопросов^_^