public boolean deleteAllItems(String tableName) throws DataAccessException {
    ScanRequest request = new ScanRequest().withTableName(tableName);
    boolean deleted = false;
    ScanResult result = ddb.scan(request);
    for (Map<String, AttributeValue> item : result.getItems()) {
      Key key = DynamoDBUtil.getIdKey(item);
      deleteItem(tableName, key);
      deleted = true;
    }

    // keep repeating until we get through all matched items
    Key lastKeyEvaluated = null;
    do {
      lastKeyEvaluated = result.getLastEvaluatedKey();
      if (lastKeyEvaluated != null) {
        request = new ScanRequest(tableName).withExclusiveStartKey(lastKeyEvaluated);
        result = ddb.scan(request);
        for (Map<String, AttributeValue> item : result.getItems()) {
          Key key = DynamoDBUtil.getIdKey(item);
          deleteItem(tableName, key);
          deleted = true;
        }
      }
    } while (lastKeyEvaluated != null);

    return deleted;
  }