As far as I have seen there is no way to rerun a previous transaction. You can just catch it and try again

Usually if you are doing this it is a symptom of other problems that need to be looked at though. My uninformed and inexperienced guess is that the problem will grow worse and more users/threads are using the system.
Can you find out what it is deadlocked on? the transactions that are running into each other?
If it is tables being manually locked with explicit lock statements or select for updates then you can probably rearrange the table lock order so that they are the same and avoid the deadlock. (I usualy do table locks in alphabetical order if I have to do it manually hehe)
also (and I am really speculating here..) it looks like you are doing .getMoreResults which I will assume gets X results out of N. If this is leaving a cursor open on a locked table in the database then it might not truely be a deadlock. It is just one query take up to much time getting results slowly and the other query gets tired of waiting. You could probably improve that by getting what you need out immediately and doing incremental queries. This is wild speculation! haha.