Skip to content

Commit

Permalink
Fix proposal for HHH-8373
Browse files Browse the repository at this point in the history
  • Loading branch information
Ouzned authored and brmeyer committed Aug 1, 2013
1 parent acafe63 commit e8035cc
Showing 1 changed file with 14 additions and 12 deletions.
Expand Up @@ -23,6 +23,10 @@
*/
package org.hibernate.ejb;

import static javax.persistence.TemporalType.DATE;
import static javax.persistence.TemporalType.TIME;
import static javax.persistence.TemporalType.TIMESTAMP;

import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
Expand All @@ -31,6 +35,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Parameter;
Expand All @@ -40,14 +45,11 @@
import javax.persistence.TransactionRequiredException;
import javax.persistence.TypedQuery;

import org.jboss.logging.Logger;

import org.hibernate.CacheMode;
import org.hibernate.FlushMode;
import org.hibernate.HibernateException;
import org.hibernate.LockMode;
import org.hibernate.QueryParameterException;
import org.hibernate.SQLQuery;
import org.hibernate.TypeMismatchException;
import org.hibernate.ejb.internal.EntityManagerMessageLogger;
import org.hibernate.ejb.util.ConfigurationHelper;
Expand All @@ -56,13 +58,11 @@
import org.hibernate.engine.query.spi.OrdinalParameterDescriptor;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.hql.internal.QueryExecutionRequestException;
import org.hibernate.internal.SQLQueryImpl;
import org.hibernate.internal.AbstractQueryImpl;
import org.hibernate.internal.SQLQueryImpl;
import org.hibernate.type.CompositeCustomType;

import static javax.persistence.TemporalType.DATE;
import static javax.persistence.TemporalType.TIME;
import static javax.persistence.TemporalType.TIMESTAMP;
import org.hibernate.type.Type;
import org.jboss.logging.Logger;

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

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

private static class ParameterImpl implements Parameter {
Expand Down

0 comments on commit e8035cc

Please sign in to comment.