@Override public QueryOneResult queryOne(Object id, QueryOptionsBase options) { if (!rm.isManyToOne()) { throw new IllegalStateException("Relation '" + rm.getName() + "' must be " + RelationType.MANY_TO_ONE + "' for query one"); } RelationExecutionContext context = new DefaultRelationExecutionContext(DefaultRelationQueryExecutor.this.context); ex.preRelateQueryOne(context, id, options); Record record; if (remoteRest) { record = queryOneRemoteSource(id, options); }else if (tem.isRemoteRest()) { record = queryOneRemoteTarget(id, options); }else { record = iqe.queryOneByRelation(id, options); } ex.postRelateQueryOne(context, id, record); QueryOneResult result = new QueryOneResult(record); ex.completeRelateQueryOne(context, id, result); return result; }