SELECT ITEMS.* FROM ITEMS,PARTS T1,CONDITIONS T2 WHERE (((((ITEMS.PART LIKE 'ZP1%') OR (ITEMS.SEGREGATION_CODE LIKE 'ZC1%')) AND T1.PART = ITEMS.PART AND (T1.CAGE LIKE 'Z-TESTNOUN%'))) OR ((((ITEMS.PART LIKE 'ZCP1%') OR (ITEMS.CAGE LIKE 'ZCC1%')) AND T2.CONDITION_CODE = ITEMS.CONDITION_CODE))) ORDER BY ITEMS.ITEM_ID ASC
Criteria c1 = new Criteria();
c1.setTable(PartMeta.getName());
c1.addInnerCriteria(PartMeta.PART, ItemMeta.PART);
c1.addCriteria(PartMeta.CAGE, Criteria.RELATIONAL_BEGINS_WITH, "Z-TESTNOUN");
AtomicCriteria ac2 = new AtomicCriteria();
ac2.addCriteria(ItemMeta.PART, Criteria.RELATIONAL_BEGINS_WITH, "ZP1");
ac2.addOrCriteria(ItemMeta.SEGREGATION_CODE, Criteria.RELATIONAL_BEGINS_WITH, "ZC1");
AtomicCriteria cac2 = new AtomicCriteria();
cac2.addAtomic(ac2);
cac2.addAggregate(c1);
AtomicCriteria mac2 = new AtomicCriteria();
mac2.addAtomic(cac2);
Criteria c2 = new Criteria();
c2.setTable(ConditionMeta.getName());
c2.addInnerCriteria(ConditionMeta.CONDITION_CODE, ItemMeta.CONDITION_CODE);
AtomicCriteria ac1 = new AtomicCriteria();
ac1.addCriteria(ItemMeta.PART, Criteria.RELATIONAL_BEGINS_WITH, "ZCP1");
ac1.addOrCriteria(ItemMeta.CAGE, Criteria.RELATIONAL_BEGINS_WITH, "ZCC1");
AtomicCriteria cac1 = new AtomicCriteria();
cac1.addAtomic(ac1);
cac1.addAggregate(c2);
AtomicCriteria mac1 = new AtomicCriteria();
mac1.addAtomic(cac1);
AtomicCriteria ac = new AtomicCriteria();
ac.addAtomic(mac2);
ac.addOrAtomic(mac1);
Criteria c = new Criteria();
c.setTable(ItemMeta.getName());
c.addAtomic(ac);
c.addOrderBy(ItemMeta.ITEM_ID, Criteria.ORDER_BY_ASC);