private Query getFKQuery(AbstractDomainObject obj, ClassDescriptor cld, CollectionDescriptor cod) {
if (cod.isMtoNRelation()) {
Object[] thisClassFks = cod.getFksToThisClass();
Object[] itemClassFks = cod.getFksToItemClass();
String table = cod.getIndirectionTable();
Criteria criteria = new Criteria();
criteria.addColumnEqualTo(table + "." + thisClassFks[0], obj.getOid());
criteria.addColumnEqualToField(table + "." + itemClassFks[0], "OID");
ClassDescriptor refCld = getClassDescriptor(cod.getItemClass());
return QueryFactory.newQuery(refCld.getClassOfObject(), table, criteria);
} else {
ClassDescriptor refCld = getClassDescriptor(cod.getItemClass());
FieldDescriptor[] fields = cod.getForeignKeyFieldDescriptors(refCld);
Criteria criteria = new Criteria();
criteria.addEqualTo(fields[0].getAttributeName(), obj.getOid());
return QueryFactory.newQuery(refCld.getClassOfObject(), criteria);
}
}