org.hibernate.query.sqm.tree.select.SqmDynamicInstantiation Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
Hibernate's core ORM functionality
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.query.sqm.tree.select;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.hibernate.query.sqm.consume.spi.SemanticQueryWalker;
import org.hibernate.query.sqm.tree.expression.SqmExpression;
import org.hibernate.sql.ast.tree.spi.expression.instantiation.DynamicInstantiationNature;
import org.hibernate.type.descriptor.java.spi.JavaTypeDescriptor;
import org.jboss.logging.Logger;
import static org.hibernate.sql.ast.tree.spi.expression.instantiation.DynamicInstantiationNature.CLASS;
import static org.hibernate.sql.ast.tree.spi.expression.instantiation.DynamicInstantiationNature.LIST;
import static org.hibernate.sql.ast.tree.spi.expression.instantiation.DynamicInstantiationNature.MAP;
/**
* Represents a dynamic instantiation ({@code select new XYZ(...) ...}) as part of the SQM.
*
* @author Steve Ebersole
*/
public class SqmDynamicInstantiation
implements SqmSelectableNode, SqmAliasedExpressionContainer {
private static final Logger log = Logger.getLogger( SqmDynamicInstantiation.class );
public static SqmDynamicInstantiation forClassInstantiation(JavaTypeDescriptor targetJavaType) {
return new SqmDynamicInstantiation(
new DynamicInstantiationTargetImpl( CLASS, targetJavaType )
);
}
public static SqmDynamicInstantiation forMapInstantiation(JavaTypeDescriptor