Spring data 查询注释不适用于max(id)

Spring data 查询注释不适用于max(id),spring-data,spring-data-jpa,jpql,jhipster,Spring Data,Spring Data Jpa,Jpql,Jhipster,我有一个域对象GenJournal,它有一个自动生成的id成员Long。我还添加了一个JPA存储库 @Query("select coalesce(max(u.id), 0) from GenJournal u") Long getMaxId(); 在我添加coalesce之前,getMaxId方法返回零或null。我的数据库中有两行ID为1和2。有人能帮我确定为什么这不起作用吗 我正在尝试获取最新的或最大的id,以便在返回服务类中最新的GenJournal对象后使用find方法 我被难住了,

我有一个域对象GenJournal,它有一个自动生成的id成员Long。我还添加了一个JPA存储库

@Query("select coalesce(max(u.id), 0) from GenJournal u")
Long getMaxId();
在我添加coalesce之前,getMaxId方法返回零或null。我的数据库中有两行ID为1和2。有人能帮我确定为什么这不起作用吗

我正在尝试获取最新的或最大的id,以便在返回服务类中最新的GenJournal对象后使用find方法


我被难住了,真的需要一些选项或策略来确定为什么这不起作用。

您可以使用本机查询功能,方法是将nativeQuery=true参数传递到@Query注释中,如下所示

@Queryselect coalescemaxu.id,从Gen_Journal_表u中选择0,NativeQuery=true
长getMaxId

我的问题有两个方面。首先,我在没有使用coalesce的情况下得到null。这让我觉得这不管用。当我采用coalesce时,我没有意识到我的表没有记录,而是返回0。生产配置文件中的表有两条记录,我希望id为2


我手动检查了错误的数据库并设置了不正确的期望值。

我成功地使用了nativeQuery选项,但是我的语法是:@QuerynativeQuery=true,value=select coalescemaxu.id,0 from gen_journal u Long GetMaxId。您可以在代码之外执行本机查询以验证结果。因此,在您的例子中,您的代码指向差分贝。