hibernate异常在order by with hashset on hql query:org.hibernate.exception.sqlgrammareexception:无法使用scroll执行查询

guz6ccqo  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(405)

我正试图通过hql查询获得一个项目列表。问题是排序是在对象的hashset上完成的(orber by ab.clienti.errindirizzos,其中errindirizzos是类的hashset) Clienti ),当我尝试进行排序时,hibernate返回一个异常
客户端.java:

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

客户端.hbm.xml

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

其中表err\u 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

有什么建议吗?提前谢谢

xbp102n0

xbp102n01#

尝试改用隐式联接:

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

使用内部连接也会过滤所有 Letteracliente 没有 Cliente 或者 ErrIndirizzo . 如果 id 不是你想要的。

相关问题