【发布时间】:2019-12-15 00:57:37
【问题描述】:
我正在尝试使用 jpql 和 JPA 获取配置文件的配置文件菜单。我的“个人资料”和“个人资料菜单”实体具有多对一的关系。
我已尝试研究这些答案,但找不到任何可行的解决方案。
How to add non-standardized sql functions in Spring Boot application?
Registering a SQL function with JPA and Hibernate
https://vladmihalcea.com/hibernate-sql-function-jpql-criteria-api-query/
我也浏览了这个链接,似乎和我的问题一样, How to register non-standarized SQL functions manually in Spring Boot application?
使用本机查询时,我可以使用以下查询获取我的数据:
"SELECT
GROUP_CONCAT(pm.user_menu_id SEPARATOR ',')
AS profile_menu_ids,
p.description
FROM profile p
LEFT JOIN profile_menu pm ON p.id = pm.profile_id
WHERE
p.id =:profileId
AND
pm.status = 'Y'
GROUP BY p.id"
上面的查询为我提供了数据,
|profile_menu_ids|description |
|----------------|-------------|
|4,5 |admin profile|
jpql 中是否有任何方法或替代方案与 JPA 获得上述结果?
【问题讨论】:
-
GROUP_CONCAT是 MySQL(和 SQLite)特定的函数,所以我怀疑 JPQL 会支持它。您可能必须在 Java 端处理这个问题,可能使用流。 -
我实际上想使用 JPQL 来处理它。 JPQL 中没有替代方案吗? @TimBiegeleisen
-
不,我不认为有,主要是因为每个数据库供应商都有不同的处理组连接的方式(可能有一种 ANSI SQL 的方式,但我的猜测是很少/没有供应商真正支持它)。
标签: java mysql spring-boot jpa jpql