Java hibernate:对空值进行排序

Java hibernate:对空值进行排序,java,sql-server,hibernate,Java,Sql Server,Hibernate,我有3个实体类:Pair、BATBpa和SNSBPa。 实体类对具有诸如Pair.snsBpa和Pair.batBpa之类的依赖项 我有一个成对实体的表,当我对它们进行排序时,例如: ORDER BY pair.snsBpa.snsId (snsId is string) hql删除pair.snsBpa为空的行。如何使hql不删除空行?以下是我的hql请求: SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa LEFT JOIN FETCH p.sns

我有3个实体类:Pair、BATBpa和SNSBPa。 实体类对具有诸如Pair.snsBpa和Pair.batBpa之类的依赖项

我有一个成对实体的表,当我对它们进行排序时,例如:

ORDER BY pair.snsBpa.snsId (snsId is string)
hql删除pair.snsBpa为空的行。如何使hql不删除空行?以下是我的hql请求:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa LEFT JOIN FETCH p.snsBpa ORDER BY p.snsBpa.snsId asc
尝试:

编辑:


我找到了解决问题的办法。关键是这段代码在hibernate中

ORDER BY p.snsBpa.snsId
在mssql请求中创建交叉连接表达式,这就是为什么没有p.snsBpa==null的TypePair行的原因。这就是我创建别名的原因:

SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa bat LEFT JOIN FETCH p.snsBpa sns ORDER BY sns.snsId asc
这个别名创建从纯sql请求中删除交叉连接,我得到了所有具有null和notnull值的行

ORDER BY p.snsBpa.snsId
SELECT p FROM Pair p LEFT JOIN FETCH p.batBpa bat LEFT JOIN FETCH p.snsBpa sns ORDER BY sns.snsId asc