Author: steve.ebersole(a)jboss.com
Date: 2010-08-13 12:45:39 -0400 (Fri, 13 Aug 2010)
New Revision: 20139
Modified:
core/branches/Branch_3_5/core/src/main/java/org/hibernate/hql/ast/HqlSqlWalker.java
Log:
HHH-5449 - Versioned HQL update might issue incorrect SQL
Modified:
core/branches/Branch_3_5/core/src/main/java/org/hibernate/hql/ast/HqlSqlWalker.java
===================================================================
---
core/branches/Branch_3_5/core/src/main/java/org/hibernate/hql/ast/HqlSqlWalker.java 2010-08-13
16:32:46 UTC (rev 20138)
+++
core/branches/Branch_3_5/core/src/main/java/org/hibernate/hql/ast/HqlSqlWalker.java 2010-08-13
16:45:39 UTC (rev 20139)
@@ -26,6 +26,7 @@
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -1116,7 +1117,7 @@
eq.setFirstChild( versionPropertyNode );
AST versionIncrementNode = null;
- if ( Date.class.isAssignableFrom( versionType.getReturnedClass() ) ) {
+ if ( isTimestampBasedVersion( versionType ) ) {
versionIncrementNode = getASTFactory().create( HqlSqlTokenTypes.PARAM, "?"
);
ParameterSpecification paramSpec = new VersionTypeSeedParameterSpecification(
versionType );
( ( ParameterNode ) versionIncrementNode ).setHqlParameterSpecification( paramSpec
);
@@ -1141,6 +1142,12 @@
}
}
+ private boolean isTimestampBasedVersion(VersionType versionType) {
+ final Class javaType = versionType.getReturnedClass();
+ return Date.class.isAssignableFrom( javaType )
+ || Calendar.class.isAssignableFrom( javaType );
+ }
+
private AST generateVersionPropertyNode(Queryable persister) throws SemanticException {
String versionPropertyName = persister.getPropertyNames()[
persister.getVersionProperty() ];
AST versionPropertyRef = getASTFactory().create( HqlSqlTokenTypes.IDENT,
versionPropertyName );