вы можете использовать нативный SQL
session.beginTransaction();
Person p = getSingleResult(session.createNativeQuery("SELECT * FROM People where name = 'david'",Person.class));
session.getTransaction().commit();
и функция getSingleResult будет выглядеть примерно так:
public static <T> T getSingleResult(TypedQuery<T> query) {
query.setMaxResults(1);
List<T> list = query.getResultList();
if (list == null || list.isEmpty()) {
return null;
}
return list.get(0);
}
вы можете получить такой список:
List<Person> list = session
.createNativeQuery("SELECT * FROM People", Person.class)
.getResultList();