public Result query(String cypher, Map<String, ?> parameters, boolean readOnly) { validateQuery(cypher, parameters, readOnly); RestModelRequest request = new DefaultRestModelRequest(cypher, parameters); RestModelMapper mapper = new RestModelMapper(session.metaData(), session.context(), session.getEntityInstantiator()); return session.doInTransaction(() -> { try (Response<RestModel> response = session.requestHandler().execute(request)) { RestStatisticsModel restStatisticsModel = mapper.map(response); if (readOnly) { return new QueryResultModel(restStatisticsModel.getResult(), null); } else { return new QueryResultModel(restStatisticsModel.getResult(), restStatisticsModel.getStatistics()); } } }, Transaction.Type.READ_WRITE); }