2010-06-24 50 views
5

Tiếp theo vấn đề:Hibernate vô hiệu hóa truy vấn bộ nhớ cache

tôi tạo ra một truy vấn để hiển thị tất cả Entries của một Bảng MYSQL, nếu tôi chỉnh sửa một lĩnh vực và thực hiện các truy vấn một lần nữa tôi nhận được cùng một (cũ) Kết quả như trong truy vấn đầu tiên .

Dường như Hibernate lưu trữ kết quả. Tôi cố gắng để vô hiệu hóa Caching với

query.setCachable (false)

"hibernate.cache.use_second_level_cache"

"cache.provider_class"

"org.hibernate.cacheable"

xả và đóng phiên

nhưng không làm việc

+0

Tôi không hiểu những gì bạn đã thử (không rõ là bạn có ném một loạt các tùy chọn như bạn đã làm). Ngoài ra, tôi muốn xem truy vấn. –

+0

Nó nằm trên một Servlet/JSP Page Truy vấn truy vấn = session.createQuery ("từ MyTable"); query.setCacheable (sai); Danh sách bar = query.list(); vào lần gọi đầu tiên tôi nhận được mục nhập của bảng, sau đó tôi chỉnh sửa thủ công một số trường, nếu tôi gọi lại hàm (ví dụ: làm mới/tải lại), tôi nhận được kết quả tương tự như trước – Patrick

+0

. nó? Có giao dịch nào không? –

Trả lời

4

Tôi nghĩ rằng cấu hình bạn muốn là

hibernate.cache.use_query_cache = false 

Reference.

+0

không hoạt động ... – Patrick

+2

điều này sau đó ngụ ý rằng bộ đệm truy vấn không phải là vấn đề của bạn ở tất cả –

2

Có thể bạn chưa bao giờ lưu hoặc cập nhật mục nhập đã thay đổi thành ngủ đông không? Khi bộ nhớ cache trả về kết quả sai, thường là một dấu hiệu cho thấy có điều gì đó sai.

+0

Tôi đã thay đổi trường trong Bảng theo cách thủ công và tôi cam kết quá – Patrick

+0

Bạn có thể cập nhật câu hỏi với mã, hoặc ít nhất là các mảnh liên quan đến chỉnh sửa và cập nhật mục nhập? –

1

không có gì liên quan đến bộ nhớ cache thứ 2 hoặc truy vấn, các bộ nhớ cache này đã bị tắt theo mặc định! Những gì có thể sẽ giúp đỡ trong trường hợp của bạn là gọi session.refresh(yourEntity) để trạng thái của thực thể của bạn sẽ được đọc lại bởi ngủ đông.

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