首页 > 解决方案 > spring:: JPA Repository 自定义查询不起作用

问题描述

控制器

@PostMapping("/users")
fun apisUserList(@RequestBody param: MultiValueMap<String, String>): DataTableRes {
    return DataTable(param, arrayOf("id", "username", "email"), userRepo).search()
}

数据表

fun search(): DataTableRes {
    val rows: List<User> = userRepo.findByDataTable(this.getQuery(), this.getOrderByQuery(), limit, offset)
    return DataTableRes(rows, this.getQueryCnt(this.getQuery(), this.getOrderByQuery(), limit, offset),
                this.getAllCnt(), draw)
}

存储库

@Repository
interface UserRepo: JpaRepository<User, Long> {
    @Query(value="SELECT * FROM users WHERE ?1 ORDER BY ?2 LIMIT ?3 OFFSET ?4", nativeQuery=true)
    fun findByDataTable(where: String, orderBy: String, limit: Int, offset: Int): List<User>
}

SELECT * FROM users WHERE 1=1 AND 1=1 ORDER BY id DESC LIMIT 10 OFFSET 0

查询工作,但 nativeQuery 不工作。

[用户(id=1,电子邮件='213@gmail.com',用户名='aaa-2011337716',密码='',提供者='google',verified_email=false,group_permission_id=null,token='3d2bdda57ce84aa48de79e8ecf4b117b') , 用户(id=3, email='213133@daum.net', username='wyuaa043472118269', password='', provider='kakao', verify_email=false, group_permission_id=null, token='577f38e39ac04a8582533d580db6c2ce')]

结果是错误的。原来,ID:3 是第一位的。

如何解决?

标签: springkotlin

解决方案


推荐阅读