Typically, you allow all of these classes to distribute a common base class and use the Hibernate polymorphic query. From your description this is not possible.
Of course, if you want to go along the Hibernate path, you need to first get the size of each unrelated table, determine which table records the records on the requested page (or perhaps several), and manually extract the correct page. This is really cumbersome and definitely should be hidden under some deep DAO.
It seems that only a reasonable solution is a good old SQL with UNION and matching your own query with domain objects. Hibernate supports native queries.
source share