首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate CriteriaBuilder将多个行串联为一个

Hibernate CriteriaBuilder将多个行串联为一个
EN

Stack Overflow用户
提问于 2016-07-04 09:48:39
回答 2查看 2K关注 0票数 6

目前,我正在使用CriteriaBuilder使用hibernate获得双重结果。

我有一个存储事件ID的表和一个join表,它存储有一个ID到另一个表的多个值。例如;

事件

代码语言:javascript
运行
复制
ID ....
---------
1123
1124
1125

连接表

代码语言:javascript
运行
复制
ID  event_id  tag_id
----------------------
1  1124      2
2  1124      3
3  1123      6
4  1123      7

标签

代码语言:javascript
运行
复制
ID tag
---------
1  Dance
2  Hiphop
...

这显然会导致双重结果。例如:

代码语言:javascript
运行
复制
eventID ... tag_id   tag
--------------------
1124        2      Hiphop
1124        3      Dance

是否可以在hibernate的CriteriaBuilder中获得这样的结果集;

代码语言:javascript
运行
复制
eventID ... tag_id   tag
--------------------
1124        2,3      Hiphop, Dance

我在server内部看到了多个解决方案,但我无法找到使用hibernate的CriteriaBuilder的解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-10 19:45:52

我不知道任何单独使用CriteriaBuilder的解决方案。两种可能有效的选择。这些表似乎是事件实体和标记实体之间的多到多关系。

  1. 在事件实体中添加两个带有@公式注释的字段。@式注释允许您在其中使用一些sql语句,并可以使用来自当前实体的参数。在公式中,可以使用一些SQL专用方法。
  2. 当然,如果事件对象上有标记对象的集合,则可以在Java中这样做。可能你也已经考虑过了
票数 6
EN

Stack Overflow用户

发布于 2017-08-30 17:27:49

如果使用Oracle,就会有LISTAGG函数。在这里与“:”连用:

例如:

代码语言:javascript
运行
复制
(SELECT LISTAGG(b.DESCRIPTION, '::') WITHIN GROUP ( ORDER BY b.id) FROM TABLE_T)

这将是一个原生SQL查询。

01/server.112/e41084/functions089.htm#SQLRF30030

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38181626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档