2010-09-29 34 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionHibernate: Không thể đồng bộ hóa trạng thái cơ sở dữ liệu với phiên

Trong khi cố gắng để chèn một mục mới để một nhiều nhiều bảng có liên quan, tôi đang nhận được lỗi này: Could not synchronize database state with session tôi có thể hiểu rằng đây là một cái gì đó thỏa thuận với getSession() & session.close()

Nhưng tôi không thể tìm ra chính xác. Đối với mỗi giao dịch, tôi đang tạo một phiên mới. Nhưng tôi đóng tất cả các phiên khi người dùng đăng xuất. tức là: Tạo một phiên ngủ đông & liên kết nó với HttpSession. Sau đó, tôi phá hủy nó trong đăng xuất của người dùng.

Một số lần sau khi khắc phục sự cố này, tôi gặp lỗi a different object with the same identifier value was already associated with the session:.

Tất cả lỗi này đều đến do không mở đúng cách & phiên kết thúc.

Phương pháp nào bạn muốn mở và đóng phiên. Dự án của tôi đã tạo một ứng dụng web. Mọi bước di chuyển trong ứng dụng web đó đều liên quan đến DB.

Bất kỳ đề xuất nào !!!

Trả lời

10

a different object with the same identifier value was already associated with the session

Hibernate theo dõi các đối tượng được ánh xạ hoạt động trong phiên để có thể phát hiện bất kỳ thay đổi nào đối với các đối tượng này và ghi lại cơ sở dữ liệu khi giao dịch được thực hiện. Nếu bạn được phép thêm các đối tượng khác nhau với cùng một đối tượng định danh cơ sở dữ liệu vào một phiên, nó sẽ là mơ hồ mà trạng thái của đối tượng cần được viết.

Working with objects từ hướng dẫn tham khảo ngủ đông giải thích chi tiết này (và cách giải quyết) một cách chi tiết. Quan tâm đặc biệt là phần có tiêu đề "Sửa đổi các đối tượng tách rời", nhưng cũng sẽ cần đọc phần giới thiệu để hiểu các thuật ngữ được sử dụng.

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