Java 如何避免“0”的空结果;从“测试”中选择最大值(等级);要一张空桌子吗?

Java 如何避免“0”的空结果;从“测试”中选择最大值(等级);要一张空桌子吗?,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我需要在JPQL(2.0)中形成一个查询,以选择一个最大值(秩) 我使用:从测试中选择最大值(秩) 这很好,除了表为空的情况,然后结果是null,但我需要0 如果我能够用一个简单的if语句“捕获”null,这将不会有问题,但我不能这样做(框架只允许指定JPA查询,而不允许指定java代码) 如果表为空,有人知道如何调整该查询以获得0而不是null数据库是一个MySQL,本机查询或存储过程是没有选择的 也许: SELECT COALESCE(MAX(rank), 0) FROM test 编辑

我需要在JPQL(2.0)中形成一个查询,以选择一个最大值(秩)

我使用:
从测试中选择最大值(秩)

这很好,除了表为空的情况,然后结果是
null
,但我需要
0

如果我能够用一个简单的if语句“捕获”null,这将不会有问题,但我不能这样做(框架只允许指定JPA查询,而不允许指定java代码)

如果表为空,有人知道如何调整该查询以获得
0
而不是
null
数据库是一个MySQL,本机查询或存储过程是没有选择的

也许:

SELECT COALESCE(MAX(rank), 0) FROM test
编辑


COALESCE
似乎受到JPQL(JPA2.0)的支持:

比我快10秒:)因为这是一个本机查询(我想JPQL不允许像那样进行合并)没有本机查询,没有存储过程,如果(ret==null)ret=0,就不能执行简单的
之类的东西。我很好奇,为什么所有的限制?感觉你是故意把手绑在背后。你能在这个查询之前使用count(*)作为解决方法吗。@pap:这些限制是因为框架和环境的原因。@Nitin Chhajer:对不起,另一个限制是,我只能配置一个查询