Đầu tiên, việc bạn cần chuyển hơn 2000 id (đánh giá theo điểm đầu tiên của bạn) cho một truy vấn là một hồi chuông cảnh báo. Có lẽ có một cách tốt hơn để giải quyết vấn đề cơ bản.
Bạn có thể sử dụng cách tiếp cận số 2 và sắp xếp từng danh sách, sau đó thực hiện hợp nhất trong ứng dụng. Điều đó sẽ yêu cầu mã bổ sung, nhưng có khả năng (giả sử truy vấn thực tế là tương đối nhanh) hoạt động tốt hơn so với cách tiếp cận số 3.
Đối với # 3, có 2 nhược điểm lớn khi xử lý các bảng tạm thời:
- trong khi Hibernate không hỗ trợ chúng (xem
Table.sqlTemporaryTableCreateString
, nó sử dụng một loạt các phương thức hỗ trợ trongDialect
), chúng được sử dụng nội bộ và bạn sẽ yêu cầu mã hóa bổ sung để có thể truy cập được từ ứng dụng. - quan trọng hơn, việc sử dụng bảng tạm thời sẽ buộc bạn phải viết truy vấn của mình dưới dạng SQL gốc (vì nó sẽ không được ánh xạ). Nếu bạn đang sử dụng API tiêu chí, bạn sẽ phải sử dụng
sqlRestriction
với một truy vấn con.