2016-07-04 50 views
6

Attualmente sto ottenendo risultati doppi con la sospensione utilizzando CriteriaBuilder.Hibernate CriteriaBuilder concatena più righe in una

Ho una tabella che memorizza gli ID evento e una tabella join che memorizza più valori che hanno un ID in un'altra tabella. Per esempio;

evento

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

join tabella

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

tag

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

Ciò, ovviamente, a risultati doppie .. Eg.

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

È possibile che all'interno del CriteriaBuilder di hibernate sia possibile ottenere un set di risultati simile;

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

ho visto soluzioni multiple all'interno di SQL server stesso, ma non riesco a trovare uno che utilizza CriteriaBuilder di Hibernate.

risposta

6

Non conosco nessuna soluzione utilizzando CriteriaBuilder da solo. Due opzioni che potrebbero funzionare. Le tabelle sembrano una relazione molti a molti tra un'entità Event e una TAG.

  1. Aggiungere due campi con un'annotazione @Formula nell'entità Evento. L'annotazione @Formula consente di utilizzare alcune istruzioni SQL in esso e può utilizzare i parametri dall'entità corrente. All'interno di una formula è possibile utilizzare un approccio proprietario SQL

  2. Naturalmente è possibile farlo in Java se si dispone di una raccolta di oggetto Tag su un oggetto Event. Probabilmente già considerato da voi anche