Я пытаюсь получить список элементов, заказанных через запрос 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
Любое предложение? заранее спасибо
Вместо этого попробуйте использовать неявные соединения:
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
не тот, который вы хотели.