org.hibernate.query.sqm.tree.jpa.AbstractJpaTupleElement 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.jpa;
import org.hibernate.query.criteria.JpaTupleElement;
import org.hibernate.query.sqm.NodeBuilder;
import org.hibernate.query.sqm.SqmExpressable;
import org.hibernate.query.sqm.tree.AbstractSqmNode;
import org.hibernate.query.sqm.tree.SqmVisitableNode;
import org.hibernate.type.StandardBasicTypes;
/**
* Base support for {@link JpaTupleElement} impls
*
* @author Steve Ebersole
*/
public abstract class AbstractJpaTupleElement
extends AbstractSqmNode
implements SqmVisitableNode, JpaTupleElement {
private SqmExpressable expressableType;
private String alias;
@SuppressWarnings("WeakerAccess")
protected AbstractJpaTupleElement(SqmExpressable expressableType, NodeBuilder criteriaBuilder) {
super( criteriaBuilder );
setExpressableType( expressableType );
}
@SuppressWarnings("unused")
protected AbstractJpaTupleElement(Class javaType, NodeBuilder criteriaBuilder) {
super( criteriaBuilder );
if ( javaType != null ) {
setJavaType( javaType );
}
else {
setExpressableType( StandardBasicTypes.OBJECT_TYPE );
}
}
@Override
public String getAlias() {
return alias;
}
/**
* Protected access to set the alias.
*/
protected void setAlias(String alias) {
this.alias = alias;
}
public SqmExpressable getNodeType() {
return expressableType;
}
protected final void setExpressableType(SqmExpressable expressableType) {
//noinspection unchecked
this.expressableType = (SqmExpressable) expressableType;
}
/**
* Protected access to set the JavaTypeDescriptor via Java Class
*/
protected void setJavaType(Class targetType) {
if ( targetType != null ) {
setExpressableType(
nodeBuilder().getDomainModel()
.getTypeConfiguration()
.standardBasicTypeForJavaType( targetType )
);
}
else {
setExpressableType( StandardBasicTypes.OBJECT_TYPE );
}
}
}