2016-07-04 32 views
6

我目前使用CriteriaBuilder获得双休眠结果。Hibernate CriteriaBuilder将多个行连接成一个

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

事件

ID .... 
--------- 
1123 
1124 
1125 

连接表

ID event_id tag_id 
---------------------- 
1 1124  2 
2 1124  3 
3 1123  6 
4 1123  7 

标签

ID tag 
--------- 
1 Dance 
2 Hiphop 
... 

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

eventID ... tag_id tag 
-------------------- 
1124  2  Hiphop 
1124  3  Dance 

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

eventID ... tag_id tag 
-------------------- 
1124  2,3  Hiphop, Dance 

我已经看到SQL Server本身的多个解决方案,但我找不到一个使用hibernate的CriteriaBuilder。

回答

6

我不知道任何使用CriteriaBuilder的解决方案。两个选项可以工作。这些表似乎是一个Event实体和一个TAG之间的多对多关系。

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

  2. 当然,如果您在Event对象上有一个Tag对象集合,那么您可以在Java中执行此操作。也许您已经考虑过了