spring-boot-data-jpa 复杂查询请教

2018-04-16 10:55:17 +08:00
 tomoya92

开发项目里大多做的是 CURD 的操作,简单的一个 JpaRepository 就够用了,就算涉及到一些要判断空的字段查询,也可以用 JpaSpecificationExecutor 来解决

但今天碰到了个要使用数据库函数的查询,解决不了了,在此求助大家,例子如下:

select * from tableA where left(city, 2) in ('上海', '北京', '天津');

问题 1:jpa 里支持 left() 查询吗?

问题 2:支持的话,应该怎么写呢?

1879 次点击
所在节点    问与答
9 条回复
letitbesqzr
2018-04-16 12:09:14 +08:00
CriteriaBuilder 里有

<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
tomoya92
2018-04-16 12:10:52 +08:00
@letitbesqzr #1 能告知一下具体的用法吗?谢谢
honeycomb
2018-04-16 12:38:12 +08:00
@liygheart 看文档+自己 Google 应该是最快的办法了:
关键词 jpa left criteriabuilder
tomoya92
2018-04-16 12:41:48 +08:00
@honeycomb #3 谢谢
Jafee
2018-04-16 12:43:05 +08:00
honeycomb
2018-04-16 12:44:17 +08:00
@Jafee 最笨的办法大概是用 nativrquery ?
linsage186
2018-04-16 13:46:55 +08:00
left 函数 jpa 应该没有,用 NativeQuery 实现或改查询语句实现一样效果
wangding85
2018-04-16 13:48:19 +08:00
关键字 QueryDslPredicateExecutor
tomoya92
2018-04-16 23:17:54 +08:00
@Jafee #5 @Query 注解也不行,不过它可以写原生的 sql,但当 sql 里传入的参数有可能为空的时候,就是需要做一下判断,为空就根据它查,不为空就不加那个条件的时候,就不好弄了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447127

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX