/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.openjpa.persistence.criteria; import javax.persistence.Tuple; import javax.persistence.criteria.From; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.metamodel.Attribute; import javax.persistence.metamodel.Metamodel; /** * OpenJPA-specific extension to JPA 2.0 Criteria Query Builder API. * * * @author Pinaki Poddar * @since 2.0.0 */ public interface OpenJPACriteriaBuilder extends CriteriaBuilder { /** * The mnemonic to identify the query language. */ public static final String LANG_CRITERIA = "javax.persistence.criteria"; /** * Create a predicate based upon the attribute values of a given * "example" entity instance. The predicate is the conjunction * or disjunction of predicates for subset of attribute of the entity. * <br> * All the singular entity attributes (the basic, embedded * and uni-cardinality relations) that have a non-null or non-default * value for the example instance and are not an identity or version * attribute are included. The comparable attributes can be further * pruned by specifying variable list of attributes for exclusion. * * @param example a non-null instance of a persistent entity. * * @param style specifies various aspects of comparison such as whether * non-null attribute values be included, how string-valued attribute be * compared, whether the individual attribute based predicates are ANDed * or ORed etc. Can be null to designate default comparison style. * * @param excludes list of attributes that are excluded from comparison. * Can be null. * * @return a predicate */ public <T> Predicate qbe(From<?, T> from, T example, ComparisonStyle style, Attribute<?,?>... excludes); /** * Overloaded with no extra attribute to exclude. */ public <T> Predicate qbe(From<?, T> from, T example, ComparisonStyle style); /** * Overloaded with default comparison style. */ public <T> Predicate qbe(From<?, T> from, T example, Attribute<?,?>... excludes); /** * Overloaded with default comparison style and no extra attribute to exclude. */ public <T> Predicate qbe(From<?, T> from, T example); /** * Create a mutable style to apply on query-by-example. */ public ComparisonStyle qbeStyle(); /** * Gets the metamodel for the managed, persistent domain entities. */ public Metamodel getMetamodel(); /** * Create a <code>CriteriaQuery</code> object. * @return criteria query object */ OpenJPACriteriaQuery<Object> createQuery(); /** * Create a <code>CriteriaQuery</code> object with the specified result * type. * @param resultClass type of the query result * @return criteria query object */ <T> OpenJPACriteriaQuery<T> createQuery(Class<T> resultClass); /** * Create a <code>CriteriaQuery</code> object that returns a tuple of * objects as its result. * @return criteria query object */ OpenJPACriteriaQuery<Tuple> createTupleQuery(); }