FileDocCategorySizeDatePackage
CastFunction.javaAPI DocHibernate 3.2.51600Sun Jul 03 21:54:28 BST 2005org.hibernate.dialect.function

CastFunction

public class CastFunction extends Object implements SQLFunction
ANSI-SQL style cast(foo as type) where the type is a Hibernate type
author
Gavin King

Fields Summary
Constructors Summary
Methods Summary
public org.hibernate.type.TypegetReturnType(org.hibernate.type.Type columnType, org.hibernate.engine.Mapping mapping)

		return columnType; //note there is a wierd implementation in the client side
	
public booleanhasArguments()

		return true;
	
public booleanhasParenthesesIfNoArguments()

		return true;
	
public java.lang.Stringrender(java.util.List args, org.hibernate.engine.SessionFactoryImplementor factory)

		if ( args.size()!=2 ) {
			throw new QueryException("cast() requires two arguments");
		}
		String type = (String) args.get(1);
		int[] sqlTypeCodes = TypeFactory.heuristicType(type).sqlTypes(factory);
		if ( sqlTypeCodes.length!=1 ) {
			throw new QueryException("invalid Hibernate type for cast()");
		}
		String sqlType = factory.getDialect().getCastTypeName( sqlTypeCodes[0] );
		if (sqlType==null) {
			//TODO: never reached, since getTypeName() actually throws an exception!
			sqlType = type;
		}
		/*else {
			//trim off the length/precision/scale
			int loc = sqlType.indexOf('(');
			if (loc>-1) {
				sqlType = sqlType.substring(0, loc);
			}
		}*/
		return "cast(" + args.get(0) + " as " + sqlType + ')";