| /* |
| * Copyright (c) 2008, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0, |
| * or the Eclipse Distribution License v. 1.0 which is available at |
| * http://www.eclipse.org/org/documents/edl-v10.php. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause |
| */ |
| |
| // Contributors: |
| // Linda DeMichiel - Java Persistence 2.1 |
| // Linda DeMichiel - Java Persistence 2.0 |
| |
| |
| package javax.persistence.criteria; |
| |
| import javax.persistence.metamodel.SingularAttribute; |
| import javax.persistence.metamodel.CollectionAttribute; |
| import javax.persistence.metamodel.ListAttribute; |
| import javax.persistence.metamodel.MapAttribute; |
| import javax.persistence.metamodel.SetAttribute; |
| import java.util.Set; |
| |
| /** |
| * Represents a bound type, usually an entity that appears in |
| * the from clause, but may also be an embeddable belonging to |
| * an entity in the from clause. |
| * <p> Serves as a factory for Joins of associations, embeddables, and |
| * collections belonging to the type, and for Paths of attributes |
| * belonging to the type. |
| * |
| * @param <Z> the source type |
| * @param <X> the target type |
| * |
| * @since Java Persistence 2.0 |
| */ |
| @SuppressWarnings("hiding") |
| public interface From<Z, X> extends Path<X>, FetchParent<Z, X> { |
| |
| /** |
| * Return the joins that have been made from this bound type. |
| * Returns empty set if no joins have been made from this |
| * bound type. |
| * Modifications to the set do not affect the query. |
| * @return joins made from this type |
| */ |
| Set<Join<X, ?>> getJoins(); |
| |
| /** |
| * Whether the <code>From</code> object has been obtained as a result of |
| * correlation (use of a <code>Subquery</code> <code>correlate</code> |
| * method). |
| * @return boolean indicating whether the object has been |
| * obtained through correlation |
| */ |
| boolean isCorrelated(); |
| |
| /** |
| * Returns the parent <code>From</code> object from which the correlated |
| * <code>From</code> object has been obtained through correlation (use |
| * of a <code>Subquery</code> <code>correlate</code> method). |
| * @return the parent of the correlated From object |
| * @throws IllegalStateException if the From object has |
| * not been obtained through correlation |
| */ |
| From<Z, X> getCorrelationParent(); |
| |
| /** |
| * Create an inner join to the specified single-valued |
| * attribute. |
| * @param attribute target of the join |
| * @return the resulting join |
| */ |
| <Y> Join<X, Y> join(SingularAttribute<? super X, Y> attribute); |
| |
| /** |
| * Create a join to the specified single-valued attribute |
| * using the given join type. |
| * @param attribute target of the join |
| * @param jt join type |
| * @return the resulting join |
| */ |
| <Y> Join<X, Y> join(SingularAttribute<? super X, Y> attribute, JoinType jt); |
| |
| /** |
| * Create an inner join to the specified Collection-valued |
| * attribute. |
| * @param collection target of the join |
| * @return the resulting join |
| */ |
| <Y> CollectionJoin<X, Y> join(CollectionAttribute<? super X, Y> collection); |
| |
| /** |
| * Create an inner join to the specified Set-valued attribute. |
| * @param set target of the join |
| * @return the resulting join |
| */ |
| <Y> SetJoin<X, Y> join(SetAttribute<? super X, Y> set); |
| |
| /** |
| * Create an inner join to the specified List-valued attribute. |
| * @param list target of the join |
| * @return the resulting join |
| */ |
| <Y> ListJoin<X, Y> join(ListAttribute<? super X, Y> list); |
| |
| /** |
| * Create an inner join to the specified Map-valued attribute. |
| * @param map target of the join |
| * @return the resulting join |
| */ |
| <K, V> MapJoin<X, K, V> join(MapAttribute<? super X, K, V> map); |
| |
| /** |
| * Create a join to the specified Collection-valued attribute |
| * using the given join type. |
| * @param collection target of the join |
| * @param jt join type |
| * @return the resulting join |
| */ |
| <Y> CollectionJoin<X, Y> join(CollectionAttribute<? super X, Y> collection, JoinType jt); |
| |
| /** |
| * Create a join to the specified Set-valued attribute using |
| * the given join type. |
| * @param set target of the join |
| * @param jt join type |
| * @return the resulting join |
| */ |
| <Y> SetJoin<X, Y> join(SetAttribute<? super X, Y> set, JoinType jt); |
| |
| /** |
| * Create a join to the specified List-valued attribute using |
| * the given join type. |
| * @param list target of the join |
| * @param jt join type |
| * @return the resulting join |
| */ |
| <Y> ListJoin<X, Y> join(ListAttribute<? super X, Y> list, JoinType jt); |
| |
| /** |
| * Create a join to the specified Map-valued attribute using |
| * the given join type. |
| * @param map target of the join |
| * @param jt join type |
| * @return the resulting join |
| */ |
| <K, V> MapJoin<X, K, V> join(MapAttribute<? super X, K, V> map, JoinType jt); |
| |
| |
| //String-based: |
| |
| /** |
| * Create an inner join to the specified attribute. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> Join<X, Y> join(String attributeName); |
| |
| /** |
| * Create an inner join to the specified Collection-valued |
| * attribute. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> CollectionJoin<X, Y> joinCollection(String attributeName); |
| |
| /** |
| * Create an inner join to the specified Set-valued attribute. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> SetJoin<X, Y> joinSet(String attributeName); |
| |
| /** |
| * Create an inner join to the specified List-valued attribute. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> ListJoin<X, Y> joinList(String attributeName); |
| |
| /** |
| * Create an inner join to the specified Map-valued attribute. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, K, V> MapJoin<X, K, V> joinMap(String attributeName); |
| |
| /** |
| * Create a join to the specified attribute using the given |
| * join type. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @param jt join type |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> Join<X, Y> join(String attributeName, JoinType jt); |
| |
| /** |
| * Create a join to the specified Collection-valued attribute |
| * using the given join type. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @param jt join type |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> CollectionJoin<X, Y> joinCollection(String attributeName, JoinType jt); |
| |
| /** |
| * Create a join to the specified Set-valued attribute using |
| * the given join type. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @param jt join type |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> SetJoin<X, Y> joinSet(String attributeName, JoinType jt); |
| |
| /** |
| * Create a join to the specified List-valued attribute using |
| * the given join type. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @param jt join type |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, Y> ListJoin<X, Y> joinList(String attributeName, JoinType jt); |
| |
| /** |
| * Create a join to the specified Map-valued attribute using |
| * the given join type. |
| * @param attributeName name of the attribute for the |
| * target of the join |
| * @param jt join type |
| * @return the resulting join |
| * @throws IllegalArgumentException if attribute of the given |
| * name does not exist |
| */ |
| <X, K, V> MapJoin<X, K, V> joinMap(String attributeName, JoinType jt); |
| } |