
org.eclipse.persistence.internal.jpa.querydef.ParameterExpressionImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of eclipselink Show documentation
Show all versions of eclipselink Show documentation
EclipseLink build based upon Git transaction 346465e
package org.eclipse.persistence.internal.jpa.querydef;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.metamodel.Metamodel;
import org.eclipse.persistence.expressions.ExpressionBuilder;
import org.eclipse.persistence.internal.helper.ClassConstants;
public class ParameterExpressionImpl extends ExpressionImpl implements ParameterExpression {
protected String name;
protected Integer position;
public ParameterExpressionImpl(Metamodel metamodel, Class javaType, String name){
super(metamodel, javaType, new ExpressionBuilder().getParameter(name, javaType));
this.name = name;
}
public ParameterExpressionImpl(Metamodel metamodel, Class javaType){
super(metamodel, javaType, null);
this.name = String.valueOf(System.identityHashCode(this));
this.currentNode = new ExpressionBuilder().getParameter(this.name, javaType);
}
public ParameterExpressionImpl(Metamodel metamodel, Class javaType, Integer position){
super(metamodel, javaType, new ExpressionBuilder().getParameter(position.toString(), javaType));
this.position = position;
this.name = String.valueOf(position);
}
public void findRootAndParameters(AbstractQueryImpl query){
query.addParameter(this);
}
/**
* Return the parameter name, or null if the parameter is not a named
* parameter.
*
* @return parameter name
*/
public String getName(){
return this.name;
}
/**
* Return the parameter position, or null if the parameter is not a
* positional parameter.
*
* @return position of parameter
*/
public Integer getPosition(){
return this.position;
}
/**
* Return the Java type of the parameter. Values bound to the
* parameter must be assignable to this type.
* This method is required to be supported for criteria queries
* only. Applications that use this method for Java Persistence
* query language queries and native queries will not be portable.
* @return the Java type of the parameter
* @throws IllegalStateException if invoked on a parameter
* obtained from a Java persistence query language query or
* native query when the implementation does not support this
* use.
*/
public Class getParameterType(){
return this.javaType;
}
@Override
public int hashCode() {
if (this.name == null) this.name = "";
return this.name.hashCode();
}
public boolean isParameter(){
return true;
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (ClassConstants.STRING == obj.getClass()) {
return (this.name.equals(obj));
}
if (getClass() != obj.getClass())
return false;
ParameterExpressionImpl other = (ParameterExpressionImpl) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy