I would use a simpler table type:
CREATE OR REPLACE TYPE NUM_ARRAY AS TABLE OF NUMBER;
And then somewhat simplify the stored procedure:
CREATE OR REPLACE PROCEDURE GL_PROCESS_BULK_ENTRIES (
p_array IN NUM_ARRAY,
p_status OUT VARCHAR2)
IS
...
You then create an array of Integer
that will easily fit in memory:
Integer[] idArray = new Integer[50000];
// fill the array of integers here
for (int i = 0; i < idArray.length; i++)
idArray[i] = ....;
ARRAY a = new ARRAY(des, con, idArray);
cs.setObject(1, (Object)a);
There's no need to create any heavy-weight beans just to pass a list of IDs.