Skip to content

Commit e8035cc

Browse files
Ouznedbrmeyer
authored andcommitted
Fix proposal for HHH-8373
1 parent acafe63 commit e8035cc

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

hibernate-entitymanager/src/main/java/org/hibernate/ejb/QueryImpl.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
*/
2424
package org.hibernate.ejb;
2525

26+
import static javax.persistence.TemporalType.DATE;
27+
import static javax.persistence.TemporalType.TIME;
28+
import static javax.persistence.TemporalType.TIMESTAMP;
29+
2630
import java.util.Calendar;
2731
import java.util.Collection;
2832
import java.util.Collections;
@@ -31,6 +35,7 @@
3135
import java.util.List;
3236
import java.util.Map;
3337
import java.util.Set;
38+
3439
import javax.persistence.NoResultException;
3540
import javax.persistence.NonUniqueResultException;
3641
import javax.persistence.Parameter;
@@ -40,14 +45,11 @@
4045
import javax.persistence.TransactionRequiredException;
4146
import javax.persistence.TypedQuery;
4247

43-
import org.jboss.logging.Logger;
44-
4548
import org.hibernate.CacheMode;
4649
import org.hibernate.FlushMode;
4750
import org.hibernate.HibernateException;
4851
import org.hibernate.LockMode;
4952
import org.hibernate.QueryParameterException;
50-
import org.hibernate.SQLQuery;
5153
import org.hibernate.TypeMismatchException;
5254
import org.hibernate.ejb.internal.EntityManagerMessageLogger;
5355
import org.hibernate.ejb.util.ConfigurationHelper;
@@ -56,13 +58,11 @@
5658
import org.hibernate.engine.query.spi.OrdinalParameterDescriptor;
5759
import org.hibernate.engine.spi.SessionFactoryImplementor;
5860
import org.hibernate.hql.internal.QueryExecutionRequestException;
59-
import org.hibernate.internal.SQLQueryImpl;
6061
import org.hibernate.internal.AbstractQueryImpl;
62+
import org.hibernate.internal.SQLQueryImpl;
6163
import org.hibernate.type.CompositeCustomType;
62-
63-
import static javax.persistence.TemporalType.DATE;
64-
import static javax.persistence.TemporalType.TIME;
65-
import static javax.persistence.TemporalType.TIMESTAMP;
64+
import org.hibernate.type.Type;
65+
import org.jboss.logging.Logger;
6666

6767
/**
6868
* Hibernate implementation of both the {@link Query} and {@link TypedQuery} contracts.
@@ -111,7 +111,7 @@ private void extractParameterInfo(Map<String,Class> namedParameterTypeRedefiniti
111111
final NamedParameterDescriptor descriptor =
112112
queryImpl.getParameterMetadata().getNamedParameterDescriptor( name );
113113
Class javaType = namedParameterTypeRedefinition.get( name );
114-
if ( javaType != null && mightNeedRedefinition( javaType, descriptor.getExpectedType().getClass() ) ) {
114+
if ( javaType != null && mightNeedRedefinition( javaType, descriptor.getExpectedType() ) ) {
115115
descriptor.resetExpectedType(
116116
sfi().getTypeResolver().heuristicType( javaType.getName() )
117117
);
@@ -151,10 +151,12 @@ private SessionFactoryImplementor sfi() {
151151
return (SessionFactoryImplementor) getEntityManager().getFactory().getSessionFactory();
152152
}
153153

154-
private boolean mightNeedRedefinition(Class javaType, Class expectedType) {
154+
private boolean mightNeedRedefinition(Class javaType, Type expectedType) {
155155
// only redefine dates/times/timestamps that are not wrapped in a CompositeCustomType
156-
return java.util.Date.class.isAssignableFrom( javaType )
157-
&& !CompositeCustomType.class.isAssignableFrom( expectedType );
156+
if (expectedType == null)
157+
return java.util.Date.class.isAssignableFrom( javaType );
158+
else
159+
return java.util.Date.class.isAssignableFrom( javaType ) && !CompositeCustomType.class.isAssignableFrom( expectedType.getClass() );
158160
}
159161

160162
private static class ParameterImpl implements Parameter {

0 commit comments

Comments
 (0)