2011-10-03 21 views
7

Tôi đã phát triển một ứng dụng bảo trì khách hàng. Người dùng có thể thay đổi chi tiết khách hàng thông qua giao diện web. Tôi muốn để xử lý các tình huống sau:Hibernate Automatic Versioning

  1. User 1 tải customer1 chi tiết.
  2. User 2 tải customer1 chi tiết.
  3. User 1 thay đổi và lưu customer1 của name.
  4. User 2 chỉ thay đổi và tiết kiệm customer1 tuổi.

Trong trường hợp trên, cuối cùng cơ sở dữ liệu chứa 'tên cũ s và thời đại mới vì User 2 ghi đè User 1' customer1 cập nhật s. Tôi đang sử dụng Hibernate. Tôi đã nghe nói rằng Hibernate Automatic Versioning hỗ trợ điều này. Nếu có ai biết cách xử lý việc này, xin hãy tư vấn cho tôi.

Trả lời

12

Bạn chỉ cần thêm một lĩnh vực chú thích với @Version:

public class Customer { 

@Id 
private Long id; 

@Version 
private Long version; 

// rest of the fields, etc. 

} 

đọc this bài viết để biết thêm thông tin.

+0

Tôi sử dụng SpringJDBC trên bất kỳ ORM nào trong Dự án Java của mình. Nhưng tôi cần thêm một số chức năng @Version của Hibernate, để ngăn chặn một số tình huống như được phân loại ở đó. Vì vậy, có lẽ bạn có thể đề nghị tôi thực hiện JDBC? – MeetJoeBlack

+0

Thuật ngữ chung cho phương pháp này được gọi là _optimistic locking_. Bạn có thể tìm thấy một số hướng dẫn tại đây: http://stackoverflow.com/a/8880896/309683 – Behrang

0

một giải pháp, khi yêu cầu thứ hai có xu hướng để cập nhật thông tin chi tiết đầu tiên kiểm tra xem nó được cập nhật sau khi chi tiết nạp, nếu như vậy thì tăng ngoại lệ và cho phép người dùng thay đổi sau khi tải chi tiết một lần nữa, bạn có thể sử dụng tem thời gian chỉnh sửa để so sánh

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