Java 在@Formula中休眠更改别名

Java 在@Formula中休眠更改别名,java,hibernate,formula,alias,annotation,custom,Java,Hibernate,Formula,Alias,Annotation,Custom,我有一个领域: @Formula(value = "(select max(crm_kk_rejestr.data_otrzymania) " + "from crm_kk_rejestr " + "where crm_kk_rejestr.idkntrh = idkntrh)") private Date dataOtrzymania; 我希望按此字段排序,但我得到一个错误: ORDER BY column or

我有一个领域:

@Formula(value = "(select max(crm_kk_rejestr.data_otrzymania) " +
                   "from crm_kk_rejestr " + 
                   "where crm_kk_rejestr.idkntrh = idkntrh)")
private Date dataOtrzymania;
我希望按此字段排序,但我得到一个错误:

ORDER BY column or expression must be in SELECT list in this context.
它不起作用,因为这是子选择。如果我将subselect更改为别名“formula62_u2;”,则所有操作都正常

它可能会在hibernate中将别名更改为my custom?

有一个解决方案(SQL Server),例如:

生成的查询将是:

....
 ( validSQLquery ) as 'yourOwnAlias', null as formula0_0_
....
你只需要:

order by yourOwnAlias

生成的查询是什么?如果您没有看到它,您需要在配置中启用hibernate查询日志记录。太棒了!这对我和我妈妈都有效。使用
validSQLquery
而不是
NULL
用计算值填充
yourFieldForAlias
....
 ( validSQLquery ) as 'yourOwnAlias', null as formula0_0_
....
order by yourOwnAlias