Прежде всего, я не специалист по Hibernate.Но ваш первый запрос, если специфичен для SQL Server:
select e.*
from terminal_remote_deployment e
where id = (select top 1 e1.id
from terminal_remote_deployment e1
where e1.Terminal_info_id = e.Terminal_info_id
order by e1.version desc
);
, я бы переписал его, используя ROW_NUMBER
(поддерживается MySQL 8.0 / MariaDB / SQL Server / PostgreSQL / Oracle / H2 / Derby / ...) итогда я бы использовал именованный запрос:
SELECT *
FROM(SELECT e.*,
ROW_NUMBER() OVER(PARTITION BY Terminal_info_id ORDER BY version desc) AS rn
FROM terminal_remote_deployment e) sub
WHERE rn = 1;