InExpressionpublic class InExpression extends Object implements CriterionConstrains the property to a specified list of values |
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.String | toSqlString(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.String | toString()
return propertyName + " in (" + StringHelper.toString(values) + ')";
|
|