Author: tmortagne
Date: 2008-01-16 21:21:38 +0100 (Wed, 16 Jan 2008)
New Revision: 6871
Modified:
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
Log:
XWIKI-2013: Named HQL queries only support String values HibernateStore.
Modified:
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
===================================================================
---
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2008-01-16 20:21:33 UTC (rev 6870)
+++
xwiki-platform/core/branches/xwiki-core-1.2/xwiki-core/src/main/java/com/xpn/xwiki/store/XWikiHibernateStore.java
2008-01-16 20:21:38 UTC (rev 6871)
@@ -26,7 +26,6 @@
import com.xpn.xwiki.doc.XWikiDocument;
import com.xpn.xwiki.doc.XWikiLink;
import com.xpn.xwiki.doc.XWikiLock;
-import com.xpn.xwiki.doc.rcs.XWikiRCSNodeInfo;
import com.xpn.xwiki.monitor.api.MonitorPlugin;
import com.xpn.xwiki.objects.*;
import com.xpn.xwiki.objects.classes.BaseClass;
@@ -1625,6 +1624,39 @@
return ("1".equals(context.getWiki().Param(param + ".read", "1")));
}
+ /**
+ * Add values into named query.
+ *
+ * @param parameterId the parameter id to increment.
+ * @param query the query to fill.
+ * @param parameterValues the values to add to query.
+ * @return the id of the next parameter to add.
+ */
+ private int injectParameterListToQuery(int parameterId, Query query,
Collection parameterValues)
+ {
+ int index = parameterId;
+
+ if (parameterValues != null) {
+ for (Iterator valueIt = parameterValues.iterator();
valueIt.hasNext(); ++index) {
+ injectParameterToQuery(index, query, valueIt.next());
+ }
+ }
+
+ return index;
+ }
+
+ /**
+ * Add value into named query.
+ *
+ * @param parameterId the parameter id to increment.
+ * @param query the query to fill.
+ * @param parameterValue the values to add to query.
+ */
+ private void injectParameterToQuery(int parameterId, Query query, Object
parameterValue)
+ {
+ query.setParameter(parameterId, parameterValue);
+ }
+
public List searchDocumentsNames(String parametrizedSqlClause, List
parameterValues,
XWikiContext context) throws XWikiException
{
@@ -1700,12 +1732,7 @@
// Add values for provided HQL request containing "?" characters
where to insert real
// values.
- int parameterId = 0;
- if (parameterValues != null) {
- for (Iterator values = parameterValues.iterator();
values.hasNext();) {
- query.setString(parameterId++, values.next().toString());
- }
- }
+ int parameterId = injectParameterListToQuery(0, query,
parameterValues);
if (whereParams != null) {
for (int i = 0; i < whereParams.length; i++)
@@ -1837,14 +1864,7 @@
Session session = getSession(context);
Query query = session.createQuery(sql);
- if (parameterValues != null)
- {
- int i = 0;
- for (Iterator values = parameterValues.iterator();
values.hasNext();) {
- query.setString(i, (String) values.next());
- i++;
- }
- }
+ injectParameterListToQuery(0, query, parameterValues);
if (start!=0)
query.setFirstResult(start);
@@ -1922,13 +1942,7 @@
Query query = session.createQuery(sql);
- if (parameterValues != null) {
- int i = 0;
- for (Iterator values = parameterValues.iterator();
values.hasNext();) {
- query.setString(i, values.next().toString());
- i++;
- }
- }
+ injectParameterListToQuery(0, query, parameterValues);
if (start != 0)
query.setFirstResult(start);
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications