Под "досягаемостью" я предполагаю, что вы имеете в виду область сложных запросов, связанных с SQL, которые могут быть построены с помощью вызовов методов через определенный объект Criteria (как обсуждено здесь ).
По моему опыту, наиболее распространенные задачи, основанные на фильтрации результатов, упорядочении, проецировании, группировании, логических конъюнктивных или дизъюнктивных операторах или подзапросах, могут выполняться путем мутации объекта Criteria
ожидаемым образом.
В качестве альтернативы вы можете использовать Session.createSQLQuery
для построения необработанного SQL-запроса, затем Query.list
или Query.executeUpdate
для его выполнения.Например:
Sesion sess = getSession();
Query mySelect = sess.createSQLQuery("SELECT * from foo");
List<Entity> results = mySelect.list();
Query myUpdate = sess.createSQLQuery("DELETE * from foo where bar = \"boz\"");
int updateCount = myUpdate.executeUpdate();
Очевидно, вы захотите расширить этот наивный пример, но вы поняли идею.