query返回空值

uurv41yg  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(500)

好的,我对spring boot还比较陌生,我现在遇到了一个问题,即在postman中尝试成功地对我的mysql数据库运行以下查询,而不接收空值列表:

@Query("SELECT user.id, user.email FROM ProjectUser user WHERE user.lastLogin IS NOT NULL AND user.userType = 'Test'")
    List<ProjectUser> test1();

user.id和user.email在数据库中的类型是bigint(20)和varchar(255),我怀疑这可能与它们没有声明为nvarchar有关,但我没有尝试修改它,因为我担心它会损坏数据库:p。但是,我看到条件作用是正确的,因为返回的对象数是正确的,所以我怀疑问题主要与表示值有关。
相比之下,以下nativequery工作正常,并在postman中返回非空值:

@Query(value = "SELECT id, email FROM user WHERE last_login IS NOT NULL AND user_type = 'Test'", nativeQuery = true)
    List<ProjectUser> test1();

我只是想知道这里是否有人知道如何解决这个问题?我不一定明白为什么不使用nativequery解决方案,但它更多的是好奇和理解问题。

bqujaahr

bqujaahr1#

您应该严格区分hql/jpql查询和原生sql查询。
当您在jpqlselect子句中使用列的显式列表时,这意味着您应该期望结果是 List<Object[]> .
因此,对于您的情况,您应该按以下方式更正查询:

@Query("SELECT user FROM ProjectUser user WHERE user.lastLogin IS NOT NULL AND user.userType = 'Test'")
List<ProjectUser> test1();

有关可以在select子句中使用的值的详细说明,请参阅文档。

相关问题