At this point, there are still some known issues and limitations affecting the use of SQLContainer in certain situations. The known issues and brief explanations are listed below:

  • Some SQL data types do not have write support when using TableQuery:
    • All binary types
    • All custom types
    • CLOB (if not converted automatically to a String by the JDBC driver in use)
    • See com.vaadin.addon.sqlcontainer.query.generator.StatementHelper for details.
  • When using Oracle or MS SQL database, the column name "rownum" can not be used as a column name in a table connected to SQLContainer.

    This limitation exists because the databases in question do not support limit/offset clauses required for paging. Instead, a generated column named 'rownum' is used to implement paging support.

The permanent limitations are listed below. These can not or most probably will not be fixed in future versions of SQLContainer.

  • The getItemIds() method is very inefficient - avoid calling it unless absolutely required!
  • When using FreeformQuery without providing a FreeformStatementDelegate, the row count query is very inefficient - avoid using FreeformQuery without implementing at least the count query properly.
  • When using FreeformQuery without providing a FreeformStatementDelegate, writing, sorting and filtering will not be supported.
  • When using Oracle database most or all of the numeric types are converted to java.math.BigDecimal by the Oracle JDBC Driver.

    This is a feature of how Oracle DB and the Oracle JDBC Driver handles data types.