Due to the database connection inherent to the SQLContainer, some of the
methods from the container interfaces of Vaadin can not (or would not make
sense to) be implemented. These methods are listed below, and they will throw
an UnsupportedOperationException
on invocation.
public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) public boolean removeContainerProperty(Object propertyId) public Item addItem(Object itemId) public Object addItemAt(int index) public Item addItemAt(int index, Object newItemId) public Object addItemAfter(Object previousItemId) public Item addItemAfter(Object previousItemId, Object newItemId)
Additionally, the following methods of the Item
interface are not supported in the RowItem
class:
public boolean addItemProperty(Object id, Property property) public boolean removeItemProperty(Object id)
To properly implement the Vaadin Container
interface, a getItemIds()
method has been
implented in the SQLContainer
. By definition, this
method returns a collection of all the item IDs present in the
container. What this means in the SQLContainer
case
is that the container has to query the database for the primary key
columns of all the rows present in the connected database table.
It is obvious that this could potentially lead to fetching tens or even
hundreds of thousands of rows in an effort to satisfy the method
caller. This will effectively kill the lazy loading properties of
SQLContainer
and therefore the following warning is
expressed here:
It is highly recommended not to call the
getitemIds()
method, unless it is known that
in the use case in question the item ID set will always be of
reasonable size.