diff --git a/dspace-api/src/main/java/org/dspace/content/Collection.java b/dspace-api/src/main/java/org/dspace/content/Collection.java index 0f832c145d..8a1c1667ed 100644 --- a/dspace-api/src/main/java/org/dspace/content/Collection.java +++ b/dspace-api/src/main/java/org/dspace/content/Collection.java @@ -28,6 +28,7 @@ import org.dspace.workflow.WorkflowItem; import org.dspace.xmlworkflow.storedcomponents.CollectionRole; import org.dspace.xmlworkflow.storedcomponents.XmlWorkflowItem; +import java.io.Serializable; import java.io.IOException; import java.io.InputStream; import java.sql.PreparedStatement; @@ -450,13 +451,20 @@ public class Collection extends DSpaceObject */ public ItemIterator getItems(Integer limit, Integer offset) throws SQLException { - String myQuery = "SELECT item.* FROM item, collection2item WHERE " - + "item.item_id=collection2item.item_id AND " - + "collection2item.collection_id= ? " - + "AND item.in_archive='1' limit ? offset ?"; + List params = new ArrayList(); + StringBuffer myQuery = new StringBuffer( + "SELECT item.* " + + "FROM item, collection2item " + + "WHERE item.item_id = collection2item.item_id " + + "AND collection2item.collection_id = ? " + + "AND item.in_archive = '1'" + ); - TableRowIterator rows = DatabaseManager.queryTable(ourContext, "item", - myQuery,getID(), limit, offset); + params.add(getID()); + DatabaseManager.applyOffsetAndLimit(myQuery, params, offset, limit); + + TableRowIterator rows = DatabaseManager.query(ourContext, + myQuery.toString(), params.toArray()); return new ItemIterator(ourContext, rows); }