@Override public FluentValuesLoader loadValues(String queryString) { return new FluentValuesLoader(queryString, this); }
/** * The same as invoking {@link #property(String)} multiple times. */ public FluentValuesLoader properties(String... properties) { return properties(Arrays.asList(properties)); }
/** * Loads a list of entities. */ public List<KeyValueEntity> list() { ValueLoadContext loadContext = createLoadContext(); return dataManager.loadValues(loadContext); }
/** * Loads a single instance and wraps it in Optional. */ public Optional<KeyValueEntity> optional() { ValueLoadContext loadContext = createLoadContext(); loadContext.getQuery().setMaxResults(1); List<KeyValueEntity> list = dataManager.loadValues(loadContext); return list.isEmpty() ? Optional.empty() : Optional.of(list.get(0)); }
@Override public FluentValuesLoader loadValues(String queryString) { return new FluentValuesLoader(queryString, dataManager, true); }
/** * Loads a single instance. * * @throws IllegalStateException if nothing was loaded */ public KeyValueEntity one() { ValueLoadContext loadContext = createLoadContext(); loadContext.getQuery().setMaxResults(1); List<KeyValueEntity> list = dataManager.loadValues(loadContext); if (!list.isEmpty()) return list.get(0); else throw new IllegalStateException("No results"); }
/** * Entry point to the fluent API for loading scalar values. * <p> * Usage examples: * <pre> * List<KeyValueEntity> customerDataList = dataManager.loadValues( * "select c.name, c.status from sample$Customer c where c.name = :n") * .properties("custName", "custStatus") * .parameter("name", "Smith") * .list(); * * KeyValueEntity customerData = dataManager.loadValues( * "select c.name, count(c) from sample$Customer c group by c.name") * .properties("custName", "custCount") * .one(); * </pre> * @param queryString query string */ default FluentValuesLoader loadValues(String queryString) { return new FluentValuesLoader(queryString, this); }