2016-07-04 54 views
6

Tôi hiện đang nhận được kết quả gấp đôi với hibernate bằng cách sử dụng CriteriaBuilder.Hibernate CriteriaBuilder kết nối nhiều hàng thành một

Tôi có bảng lưu trữ ID sự kiện và bảng tham gia lưu trữ nhiều giá trị có ID cho một bảng khác. Ví dụ;

kiện

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

tham gia bảng

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

thẻ

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

Điều này rõ ràng sẽ dẫn đến kết quả tăng gấp đôi .. Ví dụ.

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

Có thể trong CriteriaBuilder của hibernate để có được kết quả như sau;

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

Tôi đã thấy nhiều giải pháp trong chính máy chủ SQL nhưng tôi không thể tìm thấy một giải pháp bằng cách sử dụng CriteriaBuilder của hibernate.

Trả lời

6

Tôi không biết bất kỳ giải pháp nào khi sử dụng CriteriaBuilder. Hai tùy chọn có thể hoạt động. Các bảng có vẻ giống như mối quan hệ nhiều đến nhiều giữa thực thể Sự kiện và một thực thể TAG.

  1. Thêm hai trường có chú thích @Formula trong thực thể Sự kiện. Chú thích @Formula cho phép bạn sử dụng một số câu lệnh sql trong đó và có thể sử dụng các tham số từ thực thể hiện tại. Bên trong công thức, bạn có thể sử dụng một số cách tiếp cận độc quyền của SQL

  2. Tất nhiên bạn có thể làm điều này trong Java nếu bạn có một bộ sưu tập đối tượng Thẻ trên đối tượng Sự kiện. Có thể bạn đã xem xét cũng là

Các vấn đề liên quan