Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Giới hạn mệnh đề Hibernate + Oracle IN, làm thế nào để giải quyết nó?

Đầ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ợ trong Dialect ), 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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách tạo bảng động trong oracle với tên cột động và kiểu dữ liệu động mà không có bất kỳ dạng xem nào hoặc bất kỳ loại bảng nào khác

  2. Thủ tục chạy Oracle với tham số một trong và tham số nhiều ra

  3. Oracle - ORA-06502:PL / SQL:lỗi số hoặc giá trị (DBMS_OUTPUT)

  4. cách chuyển dữ liệu CLOB từ cơ sở dữ liệu này sang cơ sở dữ liệu ORACLE từ xa khác có DBLinks

  5. Giải thích về toán tử INTERSECT của Oracle