Как правильно настроить criteria

320
23 августа 2017, 16:11

Есть 2 сущности связанные многие-ко-многим.
Если я хочу получить все данные то
result = session.createCriteria(ProductBrand.class).list();
вываливает мне по 4 дубля(рис. 1) из-за связи многие-ко-многим.
А SQL-запрос
result = session.createSQLQuery("SELECT * FROM wk_cas_product_brand") .addEntity(ProductBrand.class).list();
работает то нормально(никаких дублей из-за связи нет(рис. 2)), но напрягает, что в нем нужно писать реальное название таблицы.
Можно ли и как настроить ограничения в критерии, дабы связь многие-ко-многим не учитывалась?

рис. 1

рис. 2

Answer 1

Используй Projections.distinct

session.createCriteria(ProductBrand.class).setProjection(
    Projections.distinct(Projections.projectionList()
            .add(Projections.property("Марка"), "Марка")))
    .setResultTransformer(Transformers.aliasToBean(ProductBrand.class))
    .list();

Где Марка это имя поля из класса ProductBrand

READ ALSO
Почему код не проходит условие? [дубликат]

Почему код не проходит условие? [дубликат]

На данный вопрос уже ответили:

217
рекурсивная отрисовка composite component

рекурсивная отрисовка composite component

Добрый день! Я хочу сделать рекурсивный вызов composite componentТ

202
Java socket. ошибка с отправкой объекта

Java socket. ошибка с отправкой объекта

Пишу игру по сетиКлиент посылает экземпляр класса ServerCommand серверу

259
Java logger не устанавливается уровень логов

Java logger не устанавливается уровень логов

Добрый деньСоздаю логгер:

196