Исключение гибернации при заказе с помощью HashSet по HQL-запросу: org.hibernate.exception.SQLGrammarException: не удалось выполнить запрос с помощью прокрутки

1

Я пытаюсь получить список элементов, заказанных через запрос HQL. Проблема в том, что сортировка выполняется на HashSet объектов (orber by ab.clienti.errIndirizzos, где errIndirizzos - это HashSet, установленный в классе Clienti), и когда я пытаюсь выполнить сортировку, спящий режим возвращает исключение

Clienti.java:

public class Cliente implements java.io.Serializable {
//declaration var
private Set errIndirizzos = new HashSet(0);'
.....
}

Cliente.hbm.xml

<set name="errIndirizzos" inverse="true" >
     <key>
         <column name="ID_CLIENTE" precision="18" scale="0" />
     </key>
     <one-to-many class="ErrIndirizzo" />
</set>

где таблица ERR_INDIRIZZO и CLIENTE имеют уникальный ключ "ID_CLIENTE"

Запрос запроса HQL:

order by le.cliente.errIndirizzos

где le - другая таблица, содержащая Clienti

LetteraCliente.java

public class Letteracliente implements java.io.Serializable {
.....
private Cliente cliente
......
}

letteraCliente.hbm.xml

<one-to-one name="cliente" class="it.allianz.images.bean.postaMassiva.Cliente" constrained="true"></one-to-one>

Ошибка:

org.hibernate.exception.SQLGrammarException: could not execute query using scroll

Любое предложение? заранее спасибо

  • 0
    Можете ли вы показать полный HQL, который вы используете?
Теги:
hibernate
hashset

1 ответ

0

Вместо этого попробуйте использовать неявные соединения:

select distinct le
from Letteracliente le
inner join le.cliente c
inner join c.errIndirizzos e
order by e.id

Использование INNER JOIN также будет фильтровать все Letteracliente без Cliente или ErrIndirizzo. Вы можете выбрать другое свойство для ORDER BY, если id не тот, который вы хотели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню