Критерии гибернации, как сортировать проекцию количества строк в родительских и дочерних отношениях - PullRequest
1 голос
/ 02 февраля 2012

Привет. Может ли кто-нибудь помочь мне создать базу критериев на основе следующей информации. В основном этот код будет добавлен в функцию, которая возвращает количество найденных строк с количество дочерних строк больше 10. Значение 10 будет динамическим.

Я уже несколько дней сталкиваюсь с этой проблемой и мне нужна помощь.

Обратите внимание, что я не могу управлять самой базой данных, поэтому я не могу использовать представления или изменять схему базы данных. Также это упрощенная версия проблемы, другие свойства client и mapfields опущены, а создание проекций и критериев будет реорганизовано в универсальный вспомогательный метод.

public class client
{
private int id;
private string code;
@OneToMany(fetch=FetchType.Lazy)
@JoinColumn(name="code", nullable=true)
private List <MapFields> mapFields;
}

public class MapFields
{
private int id;
private string code;
}

Как я могу сделать этот SQL-запрос, используя критерии гибернации.

SELECT COUNT(*)
FROM 
(
    SELECT MapFields.code
    FROM Client LEFT JOIN MAPFields on Client.code
    GROUP BY MapFields.code
    HAVING COUNT(MapField.code) > 10
) AS A

Я пробовал следующее, но безрезультатно. Я продолжаю сталкиваться с исключением, которое говорит мне, что свойство не может быть разрешено.

org.hibernate.QueryException: не удалось разрешить свойство: numberOfMapFields of: ... Client

Criteria criteria = getCurrentSession().createCriteria(Client.class)

criteria.createAlias("mapFields", "mapFields", CriteriaSpecification.Left_Join)

ProjectionList pl = Projections.projectionList();

pl.add(Projections.count("mapFields.code", "numberOfMapFields"));

pl.add(Projections.rowCount());

criteria.setProjection(projectionList);

criteria.add(Restriction.ge("numberOfMapFields", "10"))

criteria.list();

ПОЖАЛУЙСТА, кто-нибудь может предоставить фрагмент кода о том, как сделать это, используя критерии гибернации, и если вам нужна дополнительная информация, просто скажите мне, и я постараюсь предоставить дополнительную информацию.

1 Ответ

0 голосов
/ 10 февраля 2012

выборки в предложении from не поддерживаются критериями.либо используйте hql или sql - Firo

Doh!Спасибо за информацию ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...