Hi,
You have to understand that adapter scenario seperates the generic entities you generated from the specific db bindings you plug to them.
That allows to have the same set of entities hydrate different dbs, from different dbms (some people actually use that functionality to provide multi-dbms support in their apps).
Accordingly, everything you get from your generic entities, such as the "Fields" lookup array, corresponds to your project settings independently from the db behind it.
Then everything you get from the dbspecific PersistenceInfoProvider in your dbspecific project corresponds to the db implementation you plug behind.
The matching between them is done in the PersistenceInfoProvider where the table data are stored by the name of their entities, and the column specs both by the index of the corresponding entity field and by its name.
So when you create a query by manipulating the generic objects, the dataccessadapter you use to perform the query is responsible for making it a specific query, turning the entities and fields into their corresponding Tables and columns by calling its singleton PersistenceInfoProvider, and by instanciating the Dynamic Query engine corresponding to the correct dbms.
basically, that means that within two lines of code you could have two different DataAccessAdapter run the same query on two different dbs by passing them the same generic arguments.
Hope I made it clearer.