All permutations of the pairs that add to squares
Since you don't seem to be concerned with the order of any of the collections of objects you use, only membership in those collections, Set is probably the better Collection to use, instead of List.  I imagine that Set.contains is going to be more efficient than List.contains.

Also, it's not clear to me that recursion is the way to go here.  If I were you, I would try to walk through the code with a low value for the input number and see what it's doing.  It looks like for every integer between 1 and num, you're calling getSqaureLists num x num times.  That seems like overkill.  Recursion typically does some work and then passes a smaller set of work to the recursive call.  You need to clarify how you split up that work.  If that's not working, a iterative solution might be clearer.  

You also have some code to check for duplicates.  You shouldn't need to do that.  Whether you a doing an iterative or recursive solution, you should be able to avoid ever testing duplicate values.