我们已经成功地将v2 QBO迁移到v3,在生产之后,我们从一位客户那里遇到了问题。他们在QBO帐户中拥有超过100个客户。他们想将它们复制到我们的应用程序中。我们实现了这样的导入:
DataService service = getDataService(owner); // obtain DataService via Access Keys List<com.intuit.ipp.data.Customer> customers = service.findAll(new com.intuit.ipp.data.Customer()); for (com.intuit.ipp.data.Customer customer : customers) { createCustomer(customer, owner); // this is our internal method to create }
如《类库参考》中所述 -方法findAll是一个
Method to retrieve all records for the given entity.
但是我们的客户从其QBO v3帐户中 仅 获得 前100个实体 (客户)。如果他执行相同的导入操作- 他将再次获得相同的前100个实体。此方法不允许使用任何分页选项。
所以问题是,如何获得 所有 实体?
您应该将查询端点与页面过滤器一起使用。
以下查询获取客户1-10:
String query = select($(customer)).skip(0).take(10).generate();
输出- SELECT * FROM Customer STARTPOSITION 1 MAXRESULTS 10
SELECT * FROM Customer STARTPOSITION 1 MAXRESULTS 10
以下查询使客户21-25:
String query = select($(customer)).skip(20).take(10).generate();
参考-https: //developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0201_ipp_java_devkit_3.0/0011_query_filters#Pagination
最后
QueryResult queryResult = service.executeQuery(query);
谢谢