jpa使用Sort排序加自定义sql,排序报错,是哪点问题?

有没有大佬可以看看怎么解决,想根据name来排序,结果sql中多了left.name

Service代码

Sort sort = Sort.by(Sort.Direction.DESC,"name");
        Pageable pageable = PageRequest.of(0,10,sort);
        List<UserInfo> list = userRepository.getAllList(pageable);

Repository代码

@Query(value = "select userinfo.id,userinfo.name,codeinfo.number as newnumber from userinfo " +
            "left join codeinfo on userinfo.id = codeinfo.id",nativeQuery = true)
    List<UserInfo> getAllList(Pageable pageable);

报错信息多了个left
image.png
表结构
image.png
image.png

阅读 2k
1 个回答

Sql里面添加表别名,或者把排序字段作为参数传到自定义sql

"select userinfo.id,userinfo.name,codeinfo.number as newnumber from userinfo left join codeinfo on userinfo.id = codeinfo.id",nativeQuery = true)

parse sql的时候,sql里面,left直接跟在表名后边,被认为了是表别名,
拼接sort部分的时候,jpql会自动补充表名别,出现了left.name

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏