FileDocCategorySizeDatePackage
InExpression.javaAPI DocHibernate 3.2.52321Tue Jul 19 18:25:36 BST 2005org.hibernate.criterion

InExpression

public class InExpression extends Object implements Criterion
Constrains the property to a specified list of values
author
Gavin King

Fields Summary
private final String
propertyName
private final Object[]
values
Constructors Summary
protected InExpression(String propertyName, Object[] values)

		this.propertyName = propertyName;
		this.values = values;
	
Methods Summary
public org.hibernate.engine.TypedValue[]getTypedValues(org.hibernate.Criteria criteria, CriteriaQuery criteriaQuery)

		ArrayList list = new ArrayList();
		Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName);
		if ( type.isComponentType() ) {
			AbstractComponentType actype = (AbstractComponentType) type;
			Type[] types = actype.getSubtypes();
			for ( int i=0; i<types.length; i++ ) {
				for ( int j=0; j<values.length; j++ ) {
					Object subval = values[j]==null ? 
						null : 
						actype.getPropertyValues( values[j], EntityMode.POJO )[i];
					list.add( new TypedValue( types[i], subval, EntityMode.POJO ) );
				}
			}
		}
		else {
			for ( int j=0; j<values.length; j++ ) {
				list.add( new TypedValue( type, values[j], EntityMode.POJO ) );
			}
		}
		return (TypedValue[]) list.toArray( new TypedValue[ list.size() ] );
	
public java.lang.StringtoSqlString(org.hibernate.Criteria criteria, CriteriaQuery criteriaQuery)

		String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName);
		String singleValueParam = StringHelper.repeat( "?, ", columns.length-1 )  + "?";
		if ( columns.length>1 ) singleValueParam = '(" + singleValueParam + ')";
		String params = values.length>0 ?
			StringHelper.repeat( singleValueParam + ", ", values.length-1 ) + singleValueParam :
			"";
		String cols = StringHelper.join(", ", columns);
		if ( columns.length>1 ) cols = '(" + cols + ')";
		return cols + " in (" + params + ')";
	
public java.lang.StringtoString()

		return propertyName + " in (" + StringHelper.toString(values) + ')";