spring - 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 是第一位的。
如何解决?
解决方案
推荐阅读
- excel - Excel:获取数据 -> 从 Web
- javascript - 在 Javascript 中使用 if else
- android - 允许 SQL Server 上的每个 IP 是否有风险?
- neo4j - Neo4J 变量别名无法识别
- reactjs - 仅当用户从 Stripe 成功购买时才允许他们进行有限访问
- java - 使用二进制搜索在数组中查找一个元素,使得索引等于它的值
- sql - 如何将数据从 12c 本地数据库迁移到 18c atp 数据库?
- javascript - 单击表格行时如何滚动到具有固定标题的页面上的元素?
- javascript - 如何替换字符串的所有匹配项?
- opencv - OpenCV 检测和计算图像特征