ORM 'Navigation' is your friend

Don't be tempted to hand-write queries that are equivalent to navigations between entities:


BatchControlId batchControlId = ...
Query<BatchControlParameter> query = createQuery("from BatchControlParameter parm where parm.id.batchControlId = :parentId");
query.bindId("parentId", batchControlId);
List<BatchControlParameter> list = query.list();

DO: Use this instead - it'll use the cache and will almost certainly be faster:


BatchControl batchControl = id.getEntity(); 
if (batchControl == null) { /* oh oh */ }
BatchControlParameters list = batchControl.getParameters();