All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.openjpa.persistence.criteria.OpenJPACriteriaBuilder Maven / Gradle / Ivy

There is a newer version: 4.0.0
Show newest version
/*
 * 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.CriteriaQuery;
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.
     * 
* 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 Predicate qbe(From from, T example, ComparisonStyle style, Attribute... excludes); /** * Overloaded with no extra attribute to exclude. */ public Predicate qbe(From from, T example, ComparisonStyle style); /** * Overloaded with default comparison style. */ public Predicate qbe(From from, T example, Attribute... excludes); /** * Overloaded with default comparison style and no extra attribute to exclude. */ public Predicate qbe(From 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 CriteriaQuery object. * @return criteria query object */ OpenJPACriteriaQuery createQuery(); /** * Create a CriteriaQuery object with the specified result * type. * @param resultClass type of the query result * @return criteria query object */ OpenJPACriteriaQuery createQuery(Class resultClass); /** * Create a CriteriaQuery object that returns a tuple of * objects as its result. * @return criteria query object */ OpenJPACriteriaQuery createTupleQuery(); }