blob: 262c0408783ae949003b69f5fd4e140bf4af020c [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>QueryResultsCache (interface) :: Apache Isis</title>
<link rel="canonical" href="https://isis.apache.org/refguide/2.0.0-M6/applib/index/services/queryresultscache/QueryResultsCache.html">
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../../../../_/css/site.css">
<link rel="stylesheet" href="../../../../../../_/css/site-custom.css">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,500,700,800|Montserrat:300,400,700" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"/>
<link rel="home" href="https://isis.apache.org" title="Apache Isis">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://isis.apache.org">
<span class="icon">
<img src="../../../../../../_/img/isis-logo-48x48.png"></img>
</span>
<span>Apache Isis</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<a class="navbar-end">
<div class="navbar-item hide-for-print">
<span>
<input id="algolia-search-input" placeholder="Search"></span>
</span>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Quick Start</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Starter Apps</span>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/starters/helloworld.html">Hello World</a>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/starters/simpleapp.html">Simple App</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Demos &amp; Tutorials</span>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/demo/about.html">Demo App</a>
<a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic (tutorial)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Resources</span>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/resources/cheatsheet.html">Cheatsheet</a>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/resources/icons.html">Icons</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Guides</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../../../../../setupguide/2.0.0-M6/about.html">Setup Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../../../../../userguide/2.0.0-M6/about.html">User Guide</a>
<a class="navbar-item" href="../../../../../../refguide/2.0.0-M6/about.html">Reference Guide</a>
<a class="navbar-item" href="../../../../../../testing/2.0.0-M6/about.html">Testing Guide</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Components</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Viewers</span>
<a class="navbar-item" href="../../../../../../vw/2.0.0-M6/about.html">Web UI (Wicket)</a>
<a class="navbar-item" href="../../../../../../vro/2.0.0-M6/about.html">REST API (Restful Objects)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../../../../../pjpa/2.0.0-M6/about.html">JPA (EclipseLink)</a>
<a class="navbar-item" href="../../../../../../pjdo/2.0.0-M6/about.html">JDO (DataNucleus)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../../../../../security/2.0.0-M6/about.html">Security Guide</a>
<hr class="navbar-divider"/>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Libraries</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">For Use in Apps</span>
<a class="navbar-item" href="../../../../../../subdomains/2.0.0-M6/about.html">Subdomain Libraries</a>
<a class="navbar-item" href="../../../../../../valuetypes/2.0.0-M6/about.html">Value Type Catalog</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Integrate between Apps</span>
<a class="navbar-item" href="../../../../../../mappings/2.0.0-M6/about.html">Bounded Context Mapping Libraries</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Extending the framework itself</span>
<a class="navbar-item" href="../../../../../../extensions/2.0.0-M6/about.html">Extensions Catalog</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Support</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Contact</span>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/support/slack-channel.html">Slack</a>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/support/mailing-list.html">Mailing Lists</a>
<a class="navbar-item" href="https://issues.apache.org/jira/browse/ISIS">JIRA</a>
<a class="navbar-item" href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Releases</span>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/downloads/how-to.html">Downloads</a>
<a class="navbar-item" href="../../../../../../relnotes/2.0.0-M6/about.html">Release Notes</a>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/archive/1-x.html">Archive (1.x)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Framework</span>
<a class="navbar-item" href="../../../../../../conguide/2.0.0-M6/about.html">Contributors' Guide</a>
<a class="navbar-item" href="../../../../../../comguide/2.0.0-M6/about.html">Committers' Guide</a>
<a class="navbar-item" href="../../../../../../core/2.0.0-M6/about.html">Core Design</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">ASF</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
<a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
<a class="navbar-item" href="https://www.apache.org/licenses/">Licenses</a>
<a class="navbar-item" href="https://www.apache.org/security/">Security</a>
<a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<hr class="navbar-divider"/>
<a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a>
</div>
</div>
<a class="navbar-item" href="../../../../../../docs/2.0.0-M6/about.html">
<span class="icon">
<img src="../../../../../../_/img/home.png"></img>
</span>
</a>
</div>
</div>
</nav>
</header>
<div class="body ">
<div class="nav-container" data-component="refguide" data-version="2.0.0-M5">
<aside class="nav">
<div class="panels">
<div class="nav-panel-pagination">
<a class="page-previous disabled" rel="prev" href="" title=""><span></span></a>
<a class="page-next disabled" rel="next"
href="" title=""><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent disabled" rel="prev" href="" title=""><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="../../../../about.html">Reference Guide</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../../2.0.0-M6/applib-svc/about.html">Domain Services</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/acceptheader/AcceptHeaderService.html">AcceptHeaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/appfeat/ApplicationFeatureRepository.html">ApplicationFeatureRepository</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/bookmark/BookmarkService.html">BookmarkService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/bookmarkui/BookmarkUiService.html">BookmarkUiService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/clock/ClockService.html">ClockService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/commanddto/processor/spi/CommandDtoProcessorService.html">CommandDtoProcessorService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/command/CommandExecutorService.html">CommandExecutorService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/publishing/spi/CommandSubscriber.html">CommandSubscriber</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/confview/ConfigurationMenu.html">ConfigurationMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/confview/ConfigurationViewService.html">ConfigurationViewService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/conmap/ContentMappingService.html">ContentMappingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/linking/DeepLinkService.html">DeepLinkService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/userreg/EmailNotificationService.html">EmailNotificationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/email/EmailService.html">EmailService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/publishing/spi/EntityChangesSubscriber.html">EntityChangesSubscriber</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/publishing/spi/EntityPropertyChangeSubscriber.html">EntityPropertyChangeSubscriber</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/error/ErrorReportingService.html">ErrorReportingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/eventbus/EventBusService.html">EventBusService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/exceprecog/ExceptionRecognizerService.html">ExceptionRecognizerService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/factory/FactoryService.html">FactoryService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/grid/GridLoaderService.html">GridLoaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/grid/GridService.html">GridService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/grid/GridSystemService.html">GridSystemService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/health/HealthCheckService.html">HealthCheckService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/hint/HintStore.html">HintStore</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/homepage/HomePageResolverService.html">HomePageResolverService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/user/ImpersonateMenu.html">ImpersonateMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/user/ImpersonateMenuAdvisor.html">ImpersonateMenuAdvisor</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/user/ImpersonatedUserHolder.html">ImpersonatedUserHolder</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="#refguide:applib:index/services/iactn/InteractionContext.adoc">InteractionContext</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/jaxb/JaxbService.html">JaxbService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/layout/LayoutService.html">LayoutService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/layout/LayoutServiceMenu.html">LayoutServiceMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/i18n/LocaleProvider.html">LocaleProvider</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/menu/MenuBarsLoaderService.html">MenuBarsLoaderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/menu/MenuBarsService.html">MenuBarsService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/message/MessageService.html">MessageService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/metamodel/MetaModelService.html">MetamodelService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/metamodel/MetaModelServiceMenu.html">MetamodelServiceMenu</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/metrics/MetricsService.html">MetricsService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/publishing/spi/ExecutionSubscriber.html">ExecutionSubscriber</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/queryresultscache/QueryResultsCache.html">QueryResultsCache</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/repository/RepositoryService.html">RepositoryService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/routing/RoutingService.html">RoutingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/scratchpad/Scratchpad.html">Scratchpad</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/inject/ServiceInjector.html">ServiceInjector</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/registry/ServiceRegistry.html">ServiceRegistry</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/session/SessionLoggingService.html">SessionLoggingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/sudo/SudoService.html">SudoService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/swagger/SwaggerService.html">SwaggerService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/tablecol/TableColumnOrderService.html">TableColumnOrderService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/title/TitleService.html">TitleService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/i18n/TranslationService.html">TranslationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/i18n/TranslationsResolver.html">TranslationsResolver</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/xactn/TransactionalProcessor.html">TransactionProcessor</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/xactn/TransactionService.html">TransactionService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/urlencoding/UrlEncodingService.html">UrlEncodingService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/userreg/UserRegistrationService.html">UserRegistrationService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/user/UserService.html">UserService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/wrapper/WrapperFactory.html">WrapperFactory</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/xml/XmlService.html">XmlService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/services/xmlsnapshot/XmlSnapshotService.html">XmlSnapshotService</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Viewer (Common Applib)</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/viewer/index/common/applib/services/userprof/UserProfileUiModelProvider.html">UserProfileUiModelProvider</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/about.html">Annotations</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Action.html">@Action</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/ActionLayout.html">@ActionLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Collection.html">@Collection</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/CollectionLayout.html">@CollectionLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/DomainObject.html">@DomainObject</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/DomainObjectLayout.html">@DomainObjectLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/DomainService.html">@DomainService</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/DomainServiceLayout.html">@DomainServiceLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Facets.html">@Facets</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/HomePage.html">@HomePage</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/InteractionScope.html">@InteractionScope</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/MemberSupport.html">@MemberSupport</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/MinLength.html">@MinLength</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Module.html">@Module</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Parameter.html">@Parameter</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/ParameterLayout.html">@ParameterLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Programmatic.html">@Programmatic</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Property.html">@Property</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/PropertyLayout.html">@PropertyLayout</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Title.html">@Title</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/annotation/Value.html">@Value</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">javax.validation</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/Digits.html">@Digits</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/Nullable.html">@Nullable</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/Pattern.html">@Pattern</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">JAXB</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/XmlJavaTypeAdapter.html">@XmlJavaTypeAdapter</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/XmlRootElement.html">@XmlRootElement</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">JDO</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/Column.html">@Column</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/Discriminator.html">@Discriminator</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/NotPersistent.html">@NotPersistent</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/PersistenceCapable.html">@PersistenceCapable</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-ant/PrimaryKey.html">@PrimaryKey</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../../2.0.0-M6/applib-methods/about.html">Methods</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-methods/prefixes.html">Supporting Methods</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-methods/ui-hints.html">UI Hint Methods</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/applib-methods/lifecycle.html">Lifecycle Methods</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../applib-classes/about.html">Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../applib-classes/events.html">Events</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../applib-classes/non-persisted-objects.html">Non-persisted objects</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../ViewModel.html">ViewModel</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../RecreatableDomainObject.html">RecreatableDomainObject</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../applib-classes/layout.html">Layout</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../applib-classes/value-types.html">Value Types</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../value/Blob.html">Blob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../value/Clob.html">Clob</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../value/Markup.html">Markup</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../value/LocalResourcePath.html">LocalResourcePath</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../value/Password.html">Password</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../applib-classes/utility.html">Utility Classes</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/Enums.html">Enums</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/JaxbUtil.html">JaxbUtil</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/ObjectContracts.html">ObjectContracts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/Reasons.html">Reasons</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/ReasonBuffer.html">ReasonBuffer</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/ReasonBuffer2.html">ReasonBuffer2</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../util/TitleBuffer.html">TitleBuffer</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../applib-classes/mixees-and-mixins.html">Mixees and Mixins</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../mixins/layout/Object_downloadLayoutXml.html">Object_downloadLayoutXml</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/metamodel/Object_downloadMetamodelXml.html">Object_downloadMetamodelXml</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../mixins/metamodel/Object_rebuildMetamodel.html">Object_rebuildMetamodel</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/metamodel/Object_logicalTypeName.html">Object_logicalTypeName</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/metamodel/Object_objectIdentifier.html">Object_objectIdentifier</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../viewer/index/wicket/viewer/mixins/Object_clearHints.html">Object_clearHints</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../mixins/rest/Object_openRestApi.html">Object_openRestApi</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/dto/Dto_downloadXml.html">Dto_downloadXml</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/dto/Dto_downloadXsd.html">Dto_downloadXsd</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/persistence/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.html">Persistable_downloadJdoMetadata</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="#refguide:persistence:index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc">Persistable_datanucleusIdLong</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/persistence/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.html">Persistable_datanucleusVersionLong</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/persistence/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.html">Persistable_datanucleusVersionTimestamp</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="#refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc">HasInteractionId_command</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../../../../../2.0.0-M6/applib/index/mixins/system/DomainChangeRecord_openTargetObject.html">DomainChangeRecord_openTargetObject</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../applib-classes/spec.html">Specification pattern</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../../2.0.0-M6/config/about.html">Configuration</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.applib.html">Applib</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.config.html">Core Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.meta-model.html">Core MetaModel</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.meta-model.introspector.html">Core MetaModel Introspection</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.meta-model.validator.html">MetaModel Validator</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.runtime.html">Core Runtime</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.core.runtime-services.html">Core Runtime Services</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.persistence.schema.html">Core Persistence Schema</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.security.shiro.html">Shiro Security Implementation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.security.keycloak.html">Keycloak Security Implementation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.security.spring.html">Spring Security Implementation</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.viewer.restfulobjects.html">Restful Objects Viewer</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.viewer.wicket.html">Wicket Viewer</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/datanucleus.html">DataNucleus Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/eclipselink.html">Eclipselink Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/resteasy.html">RestEasy Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.extensions.html">Extensions</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.value-types.html">Value types</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.testing.html">Testing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/isis.legacy.html">Legacy</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/config/sections/Other.html">Other</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../../../../../2.0.0-M6/schema/about.html">Schema</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/schema/mml.html">MetaModel</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/schema/cmd.html">Command</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/schema/ixn.html">Interaction</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/schema/chg.html">Changes</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../../../../../2.0.0-M6/schema/common.html">Common</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Reference Guide</span>
<span class="version">2.0.0-M5</span>
</div>
<ul class="components">
<li class="component">
<span class="title"> </span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../docs/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../docs/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">BC Mapping Libraries</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../mappings/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../mappings/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Committers' Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../comguide/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../comguide/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Contributors' Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../conguide/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../conguide/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Design Docs</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../core/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../core/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Extensions Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../extensions/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../extensions/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Incubator Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../incubator/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../incubator/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JDO/DataNucleus</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../pjdo/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../pjdo/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JPA</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../pjpa/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../pjpa/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component is-current">
<span class="title">Reference Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version is-current">
<a href="../../../../about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Release Notes</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../relnotes/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../relnotes/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">REST API (Restful Objects Viewer)</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../vro/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../vro/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Security Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../security/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../security/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Setup Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../setupguide/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../setupguide/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Subdomains Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../subdomains/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../subdomains/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Testing Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../testing/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../testing/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Tooling</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../tooling/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../tooling/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">User Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../userguide/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../userguide/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Value Types Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../valuetypes/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../valuetypes/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Web UI (Wicket Viewer)</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../../../../../vw/2.0.0-M6/about.html">2.0.0-M6</a>
</li>
<li class="version">
<a href="../../../../../../vw/2.0.0-M5/about.html">2.0.0-M5</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../../../../../docs/2.0.0-M6/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../../../../about.html">Reference Guide</a></li>
<li><a href="QueryResultsCache.html">QueryResultsCache <em>(interface)</em></a></li>
</ul>
</nav>
<div class="page-versions">
<button class="version-menu-toggle" title="Show other versions of page">2.0.0-M5</button>
<div class="version-menu">
<a class="version" href="../../../../../2.0.0-M6/applib/index/services/queryresultscache/QueryResultsCache.html">2.0.0-M6</a>
<a class="version is-current" href="QueryResultsCache.html">2.0.0-M5</a>
</div>
</div>
<div class="edit-this-page"><a href="https://github.com/apache/isis/edit/2.0.0-M5/antora/components/refguide-index/modules/applib/pages/index/services/queryresultscache/QueryResultsCache.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">QueryResultsCache <em>(interface)</em></h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Provides a mechanism by which idempotent query results can be cached for the duration of an interaction.</p>
</div>
<div class="paragraph">
<p>Caching such values is useful to improve the response time (for the end user) of code that loops "naively" through a set of items, performing an expensive operation each time. If the data is such that the same expensive operation is made many times, then the query cache is a perfect fit.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="api"><a class="anchor" href="#api"></a>API</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="title">QueryResultsCache.java</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">interface QueryResultsCache {
T execute(Callable&lt;T&gt; callable, Class&lt;?&gt; callingClass, String methodName, Object... keys) <i class="conum" data-value="1"></i><b>(1)</b>
void onTransactionEnded() <i class="conum" data-value="2"></i><b>(2)</b>
R execute(MethodReferences.Call0&lt;? extends R&gt; action, Class&lt;?&gt; callingClass, String methodName)
R execute(MethodReferences.Call1&lt;? extends R, A0&gt; action, Class&lt;?&gt; callingClass, String methodName, A0 arg0)
R execute(MethodReferences.Call2&lt;? extends R, A0, A1&gt; action, Class&lt;?&gt; callingClass, String methodName, A0 arg0, A1 arg1)
R execute(MethodReferences.Call3&lt;? extends R, A0, A1, A2&gt; action, Class&lt;?&gt; callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2)
R execute(MethodReferences.Call4&lt;? extends R, A0, A1, A2, A3&gt; action, Class&lt;?&gt; callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2, A3 arg3)
R execute(MethodReferences.Call5&lt;? extends R, A0, A1, A2, A3, A4&gt; action, Class&lt;?&gt; callingClass, String methodName, A0 arg0, A1 arg1, A2 arg2, A3 arg3, A4 arg4)
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td><a href="#execute__Callable_Class_String_Object">execute(Callable, Class, String, Object)</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Executes the callable if not already cached for the supplied calling class, method and keys.</p>
</div>
</div>
</div></td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td><a href="#onTransactionEnded__">onTransactionEnded()</a>
<div class="openblock">
<div class="content">
<div class="paragraph">
<p>Not API, for framework use only.</p>
</div>
</div>
</div></td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="members"><a class="anchor" href="#members"></a>Members</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="execute__Callable_Class_String_Object"><a class="anchor" href="#execute__Callable_Class_String_Object"></a>execute(Callable, Class, String, Object)</h3>
<div class="paragraph">
<p>Executes the callable if not already cached for the supplied calling class, method and keys.</p>
</div>
</div>
<div class="sect2">
<h3 id="onTransactionEnded__"><a class="anchor" href="#onTransactionEnded__"></a>onTransactionEnded()</h3>
<div class="paragraph">
<p>Not API, for framework use only.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="implementation"><a class="anchor" href="#implementation"></a>Implementation</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The framework provides a default implementation of <code>o.a.i.core.runtimeservices.queryresultscache.QueryResultsCacheDefault</code>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="usage"><a class="anchor" href="#usage"></a>Usage</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Suppose that there&#8217;s a <code>TaxService</code> that calculates tax on <code>Taxable</code> items, with respect to some <code>TaxType</code>, and for a given <code>LocalDate</code>.
To calculate tax it must run a database query and then perform some additional calculations.</p>
</div>
<div class="paragraph">
<p>Our original implementation is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@DomainService
public class TaxService {
public BigDecimal calculateTax(
final Taxable t, final TaxType tt, final LocalDate d) {
// query against DB using t, tt, d
// further expensive calculations
}
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Suppose now that this service is called in a loop, for example iterating over a bunch of orders, where several of those orders are for the same taxable products, say.
In this case the result of the calculation would always be the same for any given product.</p>
</div>
<div class="paragraph">
<p>We can therefore refactor the method to use the query cache as follows:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class TaxService {
public BigDecimal calculateTax(
final Taxable t, final TaxType tt, final LocalDate d) {
return queryResultsCache.execute(
new Callable&lt;BigDecimal&gt;(){ <i class="conum" data-value="1"></i><b>(1)</b>
public BigDecimal call() throws Exception {
// query against DB using t, tt, d
// further expensive calculations
}
},
TaxService.class, <i class="conum" data-value="2"></i><b>(2)</b>
"calculateTax",
t, tt, d);
}
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>the <code>Callable</code> is the original code</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>the remaining parameters in essence uniquely identify the method call.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>This refactoring will be worthwhile provided that enough of the orders being processed reference the same taxable products.
If however every order is for a different product, then no benefit will be gained from the refactoring.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="related-services"><a class="anchor" href="#related-services"></a>Related Services</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <a href="../../../../../2.0.0-M6/applib/index/services/scratchpad/Scratchpad.html" class="page">Scratchpad</a> service is also intended for actions that are called many times, allowing arbitrary information to be shared between them.</p>
</div>
</div>
</div>
</article>
<aside class="article-aside toc hide-for-print" role="navigation">
<p class="toc-title">On this page</p>
<div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
<div class="content">
<div class="copyright">
<p>
Copyright © 2010~2021 The Apache Software Foundation, licensed under the Apache License, v2.0.
<br/>
Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation.
</p>
</div>
<div class="revision">
<p>Revision: 2.0.0-M6-site-build.20210826-1021</p>
</div>
</div>
</footer>
<script src="../../../../../../_/js/site.js"></script>
<script async src="../../../../../../_/js/vendor/highlight.js"></script>
<script src="../../../../../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../../../../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../../../../../_/js/vendor/jquery.tocify.min.js"></script>
<script>
$(function() {
$("#article-toc").tocify( {
showEffect: "slideDown",
hashGenerator: "pretty",
hideEffect: "slideUp",
selectors: "h2, h3",
scrollTo: 120,
smoothScroll: true,
theme: "jqueryui",
highlightOnScroll: true
} );
});
</script>
<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script>
function focusSearchInput () { document.querySelector('#algolia-search-input').focus() }
var search = docsearch({
appId: '5ISP5TFAEN',
apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c',
indexName: 'isis-apache-org',
inputSelector: '#algolia-search-input',
autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
debug: false,
}).autocomplete
search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
focusSearchInput()
window.addEventListener('load', focusSearchInput);
</script>
<!--
docsearch options:
https://docsearch.algolia.com/docs/behavior/
-->
<!--
https://www.algolia.com/doc/api-reference/api-parameters/
algoliaOptions: { hitsPerPage: 6 },
-->
</body>
</html>