Spring Data Jpa “tableName”未Map

oaxa6hgo  于 2022-12-29  发布在  Spring
关注(0)|答案(1)|浏览(146)

我有一个用户模型的JPA存储库。我想获取最新的数据,也就是第一个出来的数据。但是因为我使用的是spring-data-jpa.1.0.2-REALEASE,所以我不能使用“findFirstBy”来获取我想要的数据。
所以我尝试使用nativequery,它有很多使用方法,而且每个版本都不一样。(我猜)不管怎样,我代码应该是这样的:

public interface UserRepository extends JpaRepository<UserModel, Long>, QueryDslPredicateExecutor<UserModel> {

    @Query("SELECT u FROM user u where u.userDevice_id = :uid ORDER BY u.Time DESC LIMIT 1")
    UserModel findFirstByUserDeviceOrderByTimeDesc(@Param("uid") Long uid);
    
.......
    
}

但它返回了这个错误
org.hibernate.hql.ast.QuerySyntaxException:用户未Map
我不能随意更改我的Spring版本,因为我使用的是旧环境。

myzjeezk

myzjeezk1#

通常,如果要使用原生查询,必须使用以下命令告诉SpringDataJPA
第一个月
但是版本1.0.2没有这个属性,我怀疑它当时不支持原生查询。
但是您的查询看起来像是SQL(即本机)和JPQL/HQL之间的混淆,您应该能够修复它。
以下方法应该有效

SELECT u 
FROM User u where u.userDevice.id = :uid ORDER BY u.time DESC LIMIT 1

假设实体类名为User,具有userDevicetime属性,用户设备具有id属性。对于所有这些名称,Java类是相关的,而不是表名或列名。
最后一点
我不能随意更改我的Spring版本,因为我使用的是旧环境。
我知道这可能不是你的决定,但使用这样一个老版本不仅是粗心,而且是鲁莽的。它浪费金钱,因为它必须处理错误和丢失的功能,这些功能早就被修复了。包括安全修复。

相关问题