в спящем режиме выберите все проекции - PullRequest
3 голосов
/ 13 июля 2011

В спецификации Критерии гибернации, если я хочу сгруппировать свойство в таблице, я должен использовать Projection.groupProperty.Проблема в том, что я не могу выбрать все поля в таблице.

То, что я хочу, это:

ВЫБРАТЬ * ИЗ СУЩЕСТВА Поле GROUP BY

Если я использую группув Критериях гибернации, тогда groupProperty должен существовать, и результатом sql будет: SELECT field FROM entity GROUP BY field.

Есть ли способ получить то, что я хочу?Я вижу в коде гибернации, в CriteriaJoinWalker, когда я хочу выбрать все (выбрать *), код уже указать, есть ли проекция или нет.Мое предположение, если я хочу изменить поведение, я должен изменить код CriteriaJoinWalker.Я могу изменить код, и, возможно, я смогу получить результат, какой хочу, но если я смогу, я не хочу переопределять код ядра hibernate для своего проекта.Есть ли способ изменить его напрямую без изменения спящего кода?

    // CriteriaJoinWalker
    if(translator.hasProjection())
    {
        resultTypes = translator.getProjectedTypes();
        initProjection(translator.getSelect(), translator.getWhereCondition(), translator.getOrderBy(), translator.getGroupBy(), LockMode.NONE);
    } else
    {
        resultTypes = (new Type[] {
            TypeFactory.manyToOne(persister.getEntityName())
        });
        initAll(translator.getWhereCondition(), translator.getOrderBy(), LockMode.NONE);
    }

Спасибо

1 Ответ

1 голос
/ 13 июля 2011

Если вы используете Проекции, вы не сможете получить объект Entity в целом. К сожалению, спящий не могу вам помочь. Проверьте это Issue , а также проверьте это thread .

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