From a4ba3f740d2938c93f13293dc6c83ee805a81e81 Mon Sep 17 00:00:00 2001 From: Peter Dietz Date: Wed, 10 Dec 2014 22:50:14 -0500 Subject: [PATCH] DS-2350 Using Oracle rownum way to limit results --- dspace-api/src/main/java/org/dspace/content/Item.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/content/Item.java b/dspace-api/src/main/java/org/dspace/content/Item.java index 9c33263c7e..3795166c7f 100644 --- a/dspace-api/src/main/java/org/dspace/content/Item.java +++ b/dspace-api/src/main/java/org/dspace/content/Item.java @@ -304,9 +304,14 @@ public class Item extends DSpaceObject TableRowIterator rows; - //TODO Oracle doesn't have concept of limit - if(limit != null && limit > 0 && !DatabaseManager.isOracle()) { - querySorted += " limit ?"; + if(limit != null && limit > 0) { + if(DatabaseManager.isOracle()) { + //Oracle syntax for limit + // select * from ( SUBQUERY ) where ROWNUM <= 5; + querySorted = "SELECT * FROM (" + querySorted + ") WHERE ROWNUM <= ?"; + } else { + querySorted += " limit ?"; + } rows = DatabaseManager.query(context, querySorted, Constants.ITEM, eperson.getID(), limit); } else { rows = DatabaseManager.query(context, querySorted, Constants.ITEM, eperson.getID());