OPENJPA-1999: Optional support for non-sequential positional parameters - made additional changes, per Mike Dick, to QueryImpl ctor.

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1134463 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Heath Thomann 2011-06-10 22:20:41 +00:00
parent cabf34a6fd
commit e9dd20c9e9
2 changed files with 14 additions and 8 deletions

View File

@ -1067,8 +1067,7 @@ public class EntityManagerImpl
} }
protected <T> QueryImpl<T> newQueryImpl(org.apache.openjpa.kernel.Query kernelQuery) { protected <T> QueryImpl<T> newQueryImpl(org.apache.openjpa.kernel.Query kernelQuery) {
return new QueryImpl<T>(this, _ret, kernelQuery, _convertPositionalParams return new QueryImpl<T>(this, _ret, kernelQuery);
&& !kernelQuery.getLanguage().equals(QueryLanguages.LANG_SQL));
} }
/** /**

View File

@ -45,6 +45,7 @@ import javax.persistence.TemporalType;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import javax.persistence.criteria.ParameterExpression; import javax.persistence.criteria.ParameterExpression;
import org.apache.openjpa.conf.Compatibility;
import org.apache.openjpa.conf.OpenJPAConfiguration; import org.apache.openjpa.conf.OpenJPAConfiguration;
import org.apache.openjpa.kernel.Broker; import org.apache.openjpa.kernel.Broker;
import org.apache.openjpa.kernel.DelegatingQuery; import org.apache.openjpa.kernel.DelegatingQuery;
@ -93,7 +94,7 @@ public class QueryImpl<X> implements OpenJPAQuerySPI<X>, Serializable {
private transient ReentrantLock _lock = null; private transient ReentrantLock _lock = null;
private HintHandler _hintHandler; private HintHandler _hintHandler;
private boolean _relaxBindParameterTypeChecking; private boolean _relaxBindParameterTypeChecking;
final private boolean _convertPositionalParams; private boolean _convertPositionalParams;
/** /**
* Constructor; supply factory exception translator and delegate. * Constructor; supply factory exception translator and delegate.
@ -102,12 +103,18 @@ public class QueryImpl<X> implements OpenJPAQuerySPI<X>, Serializable {
* @param ret Exception translator for this query * @param ret Exception translator for this query
* @param query The underlying "kernel" query. * @param query The underlying "kernel" query.
*/ */
public QueryImpl(EntityManagerImpl em, RuntimeExceptionTranslator ret, org.apache.openjpa.kernel.Query query, public QueryImpl(EntityManagerImpl em, RuntimeExceptionTranslator ret, org.apache.openjpa.kernel.Query query) {
boolean convertPositionalParams) {
_em = em; _em = em;
_query = new DelegatingQuery(query, ret); _query = new DelegatingQuery(query, ret);
_lock = new ReentrantLock(); _lock = new ReentrantLock();
_convertPositionalParams = convertPositionalParams; if(query.getLanguage() == QueryLanguages.LANG_SQL) {
_convertPositionalParams = false;
}
else {
Compatibility compat = query.getStoreContext().getConfiguration().getCompatibilityInstance();
_convertPositionalParams = compat.getConvertPositionalParametersToNamed();
}
} }
/** /**
@ -115,8 +122,8 @@ public class QueryImpl<X> implements OpenJPAQuerySPI<X>, Serializable {
* *
* @deprecated * @deprecated
*/ */
public QueryImpl(EntityManagerImpl em, org.apache.openjpa.kernel.Query query, boolean convertPositionalParams) { public QueryImpl(EntityManagerImpl em, org.apache.openjpa.kernel.Query query) {
this(em, null, query, convertPositionalParams); this(em, null, query);
} }
/** /**