public Query createQuery(String ejbql) { if (ejbql.indexOf('#') > 0) { QueryParser qp = new QueryParser(ejbql); Query query = delegate.createQuery(qp.getEjbql()); for (int i = 0; i < qp.getParameterValueBindings().size(); i++) { query.setParameter( QueryParser.getParameterName(i), qp.getParameterValueBindings().get(i).getValue()); } return query; } else { return delegate.createQuery(ejbql); } }
protected Object handleCreateQueryWithString(Method method, Object[] args) throws Throwable { if (args[0] == null) { return method.invoke(delegate, args); } String ejbql = (String) args[0]; if (ejbql.indexOf('#') > 0) { QueryParser qp = new QueryParser(ejbql); Object[] newArgs = args.clone(); newArgs[0] = qp.getEjbql(); Query query = (Query) method.invoke(delegate, newArgs); for (int i = 0; i < qp.getParameterValueBindings().size(); i++) { query.setParameter( QueryParser.getParameterName(i), qp.getParameterValueBindings().get(i).getValue()); } return query; } else { return method.invoke(delegate, args); } }