Я получил ответ из своего поиска.
String msisdnQueryString = "SELECT DISTINCT table.phone FROM TABLE_NAME table";
Query msisdnQueryObject = session.createQuery(msisdnQueryString);
List msisdnList = msisdnQueryObject.list();
List<Long> transactionList = new ArrayList<Long>();
for(Object object : msisdnList){
Long msisdn = Long.parseLong(object.toString());
String transactionQueryString = "SELECT table.transactionId FROM TABLE_NAME table WHERE table.phone = "+msisdn+" ORDER BY table.transactionId DESC";
Query transactionQueryObject = session.createQuery(transactionQueryString);
transactionQueryObject.setFirstResult(0);
transactionQueryObject.setMaxResults(1);
List transactions =transactionQueryObject.list();
if(transactions.size() > 0){
transactionList.add((Long)transactions.get(0));
}
}
Это долгий процесс, но он работает. Если кто-нибудь знает лучший способ получить такие записи, пожалуйста, оставьте свои ответы.