[hibernate-commits] Hibernate SVN: r18482 - in core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria: expression and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Sat Jan 9 11:45:00 EST 2010
Author: steve.ebersole at jboss.com
Date: 2010-01-09 11:44:59 -0500 (Sat, 09 Jan 2010)
New Revision: 18482
Modified:
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ValueHandlerFactory.java
core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/LiteralExpression.java
Log:
HHH-4774 - Do not handle literals using parameters in JPA criteria select
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ValueHandlerFactory.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ValueHandlerFactory.java 2010-01-09 16:24:44 UTC (rev 18481)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/ValueHandlerFactory.java 2010-01-09 16:44:59 UTC (rev 18482)
@@ -54,6 +54,18 @@
}
}
+ public static boolean isCharacter(Class type) {
+ return String.class.isAssignableFrom( type )
+ || Character.class.isAssignableFrom( type )
+ || Character.TYPE.equals( type );
+ }
+
+ public static boolean isCharacter(Object value) {
+ return String.class.isInstance( value )
+ || Character.class.isInstance( value )
+ || Character.TYPE.isInstance( value );
+ }
+
public static boolean isNumeric(Class type) {
return Number.class.isAssignableFrom( type )
|| Byte.TYPE.equals( type )
Modified: core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/LiteralExpression.java
===================================================================
--- core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/LiteralExpression.java 2010-01-09 16:24:44 UTC (rev 18481)
+++ core/trunk/entitymanager/src/main/java/org/hibernate/ejb/criteria/expression/LiteralExpression.java 2010-01-09 16:44:59 UTC (rev 18482)
@@ -88,8 +88,17 @@
return ':' + parameterName;
}
+ @SuppressWarnings({ "unchecked" })
public String renderProjection(CriteriaQueryCompiler.RenderingContext renderingContext) {
- return render( renderingContext );
+ // some drivers/servers do not like parameters in the select clause
+ final ValueHandlerFactory.ValueHandler handler =
+ ValueHandlerFactory.determineAppropriateHandler( literal.getClass() );
+ if ( ! ValueHandlerFactory.isCharacter( literal ) ) {
+ return '\'' + handler.render( literal ) + '\'';
+ }
+ else {
+ return handler.render( literal );
+ }
}
@Override
More information about the hibernate-commits
mailing list