好的,我对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解决方案,但它更多的是好奇和理解问题。
1条答案
按热度按时间bqujaahr1#
您应该严格区分hql/jpql查询和原生sql查询。
当您在jpqlselect子句中使用列的显式列表时,这意味着您应该期望结果是
List<Object[]>
.因此,对于您的情况,您应该按以下方式更正查询:
有关可以在select子句中使用的值的详细说明,请参阅文档。