SQL

You can choose SQL as a query language in Signsoft intelliBO too.

An SQLQuery can be defined as shown in the next example:

SQLQuery sqlQuery = QueryFactory.newSQLQuery(null);
sqlQuery.setClass(Person_DFM.class);
sqlQuery.setFilter("select * from test_tperson");

Query q = pm.newQuery(QueryLanguage.SQL, sqlQuery);
Collection col = (Collection)q.execute();
Please note the following things when using SQL queries:

You can define simple SQL queries without specifying the resultset in detail:

sqlQuery.setFilter("select * from tperson t0, " +
  "tcustomer t1 where (t0.FID = t1.FID)");
// use result-set field-names
sqlQuery.setResultSetTranslation(new HashMap());
Please note that the database driver must support table and field names for JDBC result sets.

If result set names are not unique, a manual mapping can be applied using an SQLQuery as shown below:

// define and execute query
SQLQuery sqlQuery = QueryFactory.newSQLQuery(null);
sqlQuery.setClass(Person.class);

Map rsFieldMap = new HashMap();
rsFieldMap.put("TPERSON.FFIRSTNAME", "my1");
rsFieldMap.put("TPERSON.FLASTNAME", "my3");
rsFieldMap.put("TPERSON.FID", "FID");
sqlQuery.setResultSetTranslation(rsFieldMap);
sqlQuery.setFilter(
  "select FFIRSTNAME as my1, FFIRSTDAYVALID as my2, FLASTNAME as my3, FID"
  + "from TPERSON");
Query query = pm.newQuery(QueryLanguage.SQL, sqlQuery);
In the translation table the key identifies a table column using the notation <table>.<field> . The value is the real name used in the result set.