Java 如何避免“0”的空结果;从“测试”中选择最大值(等级);要一张空桌子吗?
我需要在JPQL(2.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 编辑
从测试中选择最大值(秩)
这很好,除了表为空的情况,然后结果是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:对不起,另一个限制是,我只能配置一个查询