Hibernate CriteriaBuilder将多行连接成一个

Mee*_*ers 6 java sql hibernate concatenation

我目前使用CriteriaBuilder获得hibernate的双重结果.

我有一个存储事件ID的表和一个存储多个具有ID到另一个表的值的连接表.例如;

事件

ID ....
---------
1123
1124
1125
Run Code Online (Sandbox Code Playgroud)

加入表

ID  event_id  tag_id
----------------------
1  1124      2
2  1124      3
3  1123      6
4  1123      7
Run Code Online (Sandbox Code Playgroud)

标签

ID tag
---------
1  Dance
2  Hiphop
...
Run Code Online (Sandbox Code Playgroud)

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

eventID ... tag_id   tag
--------------------
1124        2      Hiphop
1124        3      Dance
Run Code Online (Sandbox Code Playgroud)

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

eventID ... tag_id   tag
--------------------
1124        2,3      Hiphop, Dance
Run Code Online (Sandbox Code Playgroud)

我在SQL服务器本身看到过多个解决方案,但我找不到使用hibernate的CriteriaBuilder.

小智 6

我不知道单独使用CriteriaBuilder的任何解决方案.有两种选择可行.这些表似乎是Event实体和TAG实体之间的多对多关系.

  1. 在Event实体中添加带有@Formula注释的两个字段.@Formula注释允许您在其中使用一些sql语句,并且可以使用当前实体的参数.在公式中,您可以使用一些SQL专有方法

  2. 当然,如果在Event对象上有Tag对象的集合,则可以在Java中执行此操作.可能你已经考虑过了