对CallbackDataProvider接口有一些疑问

你好
CallBackDataProvider下面有两个方法fetchFromBackend和sizeInBackend他们均需要传入一个Query<Entity,Filter>的对象

fetchFromBackend好猜,我是在后台可以直接把query的参数传入过去就行了,比如我用的mysql的话,那么基本上取数据就落实到这么一句sql上:
select * from some_entity_table where filter_parameter=query_object_filter limit offset,limit
(不知道是不是这个意思)

sizeInBackend就不是很明朗了,官方代码注释是“后台里可用条目的计数(Counts the number of items available in the back end)”
是不是就相当于:select (*) from some_entity_table?
那,query的offset和limit岂不是没用吗
。。。。。。

之所以问这个问题,是因为我用Combobox通过设置BackendDataProvider从数据库取数据时,前面有大量的空白,中间有些数据,读条一直在转。我怀疑我是不是DataProvider用的不对所以想问问

毕业设计,在线等,急。。。

sizeInBackend的话,query的offset和limit是没什么用,有用的是filter(如果有的话)。 不是select (*) from some_entity_table,应该是select count(*) from some_entity_table

fetchFromBackend对应的sql大概应该是

SELECT *
FROM
    some_entity_table
LIMIT Query的limit OFFSET Query的offset;

那为什么我的combobox用着用着有大段的空白,有时候还一直转呢?

可能只是数据库的读取比较慢?或是两个callback哪个用的不对了,也或是连个的结果不一致。没有代码很难知道具体原因是什么,所以最好能有一个project能够重现这个问题。

这里有个combobox lazy loading的例子,可以参考下
https://vaadin.com/components/vaadin-combo-box/java-examples/lazy-loading