Tôi muốn "chạy khô" truy vấn Hibernate HQL. Đó là tôi muốn biết những gì các truy vấn SQL thực tế Hibernate sẽ thực hiện từ truy vấn HQL đã cho mà không thực sự thực hiện truy vấn HQL đối với cơ sở dữ liệu thực.Hibernate và chạy HQL truy vấn tĩnh tĩnh
Tôi có quyền truy cập vào ánh xạ ngủ đông cho các bảng, chuỗi truy vấn HQL, dialect cho cơ sở dữ liệu của tôi. Tôi cũng có quyền truy cập vào cơ sở dữ liệu nếu cần.
Bây giờ, làm thế nào tôi có thể tìm hiểu tất cả các truy vấn SQL Hibernate có thể tạo ra từ HQL của tôi mà không thực sự thực hiện truy vấn đối với bất kỳ cơ sở dữ liệu nào? Có công cụ nào cho việc này không?
Lưu ý rằng nhiều truy vấn SQL có thể được tạo từ một truy vấn HQL và tập hợp các truy vấn SQL được tạo có thể khác nhau dựa trên nội dung của cơ sở dữ liệu.
Tôi không hỏi cách đăng nhập truy vấn SQL trong khi truy vấn HQL đang thực thi.
Chỉnh sửa: Tôi không nhớ kết nối với cơ sở dữ liệu để tìm nạp một số siêu dữ liệu, tôi chỉ không muốn thực hiện truy vấn.
Chỉnh sửa: Tôi cũng biết giới hạn và chênh lệch được áp dụng cho truy vấn. Tôi cũng có các tham số thực tế sẽ được liên kết với truy vấn.
Tất cả điều này gây rối với sự phản chiếu là hoàn toàn không cần thiết. 'HQLQueryPlan' có một hàm tạo công khai; bạn chỉ cần chuyển nhà máy phiên của bạn thành 'SessionFactoryImplementor'. – ChssPly76
Đúng, và sau khi đọc lại câu hỏi của mình, đó có lẽ là tất cả những gì anh ta cần. Tôi đã giải quyết tình huống mà bạn muốn nắm bắt HQL/SQL cho mỗi truy vấn chạy trong ứng dụng của bạn thời gian thực - mà không cần phải thay đổi mọi lớp trong ứng dụng thực thi truy vấn. Vì tôi không có quyền xóa, tôi đã thêm một dòng để làm rõ. –
Đủ công bằng; mặc dù nếu tất cả các bạn muốn làm là để nắm bắt SQL nó có thể dễ dàng hơn (và nhiều khả năng để tồn tại Hibernate cập nhật) để viết một appender đơn giản và đính kèm nó vào 'org.hibernate.SQL' :-) – ChssPly76