Tôi biết rằng khi ghi đè hashcode()
và equals()
đối tượng cố định của mình, tôi không nên bao gồm ID và chỉ bao gồm các thuộc tính có ý nghĩa xác định duy nhất đối tượng . Nhưng còn trường version
nào được sử dụng cho điều khiển đồng thời tối ưu lạc quan bởi Hibernate? Tôi có nên bỏ qua nó, giống như ID? Điều gì nếu chúng ta hãy nói new User(name='John', version=1).equals(new User(name='John',version=2))
, nó sẽ không gây nhầm lẫn OCC Hibernate bằng cách nào?Hibernate: Tôi có nên bao gồm trường 'phiên bản' thành phương thức hashcode() và equals()
5
A
Trả lời
3
Chúng tôi khuyên bạn nên triển khai equals() và hashCode() bằng cách sử dụng bình đẳng khóa doanh nghiệp. Kinh doanh bình đẳng chính có nghĩa là phương thức equals() chỉ so sánh các thuộc tính tạo thành khóa nghiệp vụ. Nó là chìa khóa đó sẽ xác định ví dụ của chúng ta trong thế giới thực (một phím ứng cử viên tự nhiên)
Vì vậy, bạn nên không bao gồm sở hữu phiên bản trong equals()
hashcode()
Các vấn đề liên quan
- 1. hashcode() và equals() phương pháp
- 2. Cách triển khai phương thức hashCode và equals
- 3. hashCode và equals cho Collections.unmodifiableCollection()
- 4. Tôi có cần phương thức equals và Hashcode không nếu lớp của tôi thực hiện so sánh được trong Java?
- 5. Cách tạo phương thức equals() và hashcode() bằng cách sử dụng wsimport trong jaxws
- 6. Tạo phương thức hashCode() - Java
- 7. Tạo các bài kiểm tra đơn vị cho các phương thức hashcode, equals và toString
- 8. Làm thế nào để thực hiện phương thức equals() và hashcode() trong BaseEntity của JPA?
- 9. Trường id của thực thể JPA có được xem xét bằng equals và hashCode không?
- 10. Sử dụng UUIDs cho equals rẻ() và hashCode()
- 11. Java bằng() và hashCode() dựa trên các trường khác nhau?
- 12. Tôi nên bao gồm normalize.css ở đâu?
- 13. Làm thế nào một đơn vị nên kiểm tra hợp đồng hashCode-equals?
- 14. Truyền bằng phương thức equals
- 15. Sử dụng nhiều lựa chọn thay thế của hashCode() và equals() cho các bộ
- 16. ActiveModel có mô-đun bao gồm phương thức "update_attributes" không?
- 17. Thành ngữ chuẩn để thực thi equals và hashCode trong Scala là gì?
- 18. Bắt buộc một lớp học ghi đè phương thức .equals
- 19. Lý thuyết JUnit cho hashCode/equals contract
- 20. Tôi có thể tạo bao nhiêu phiên bản System.Timers.Timer? Tôi có thể mở rộng bao xa?
- 21. Làm cách nào để tôi có thể lấy kiểu kiểm tra để bỏ qua phương thức equals() và hashcode() được tạo ra bởi nhật thực?
- 22. Cách sử dụng hibernate bằng() và hashCode()?
- 23. Tôi có cần bao gồm tệp phiên bản jquery để sử dụng jquery.ui.js không?
- 24. Tại sao Object.toString() mặc định bao gồm hashcode?
- 25. Tôi không thể tìm thấy phương thức "Bao gồm" với biểu thức lambda trong khung Entity?
- 26. Tại sao phương thức gốc hashCode() và getClass()?
- 27. Các "được" keyword và override phương thức Equals
- 28. Tại sao có phương thức equals riêng cho các bộ?
- 29. Tôi có nên bao gồm bootstrap.css và bootstrap-responsive.css cùng nhau không?
- 30. Tôi nên kiểm soát phiên bản C# dự án nào?
Yeah, tôi đã đọc điều đó. Nhưng vì trường 'version' không được đề cập ở đó và có tính đến mục đích của nó (các giá trị khác nhau có nghĩa là các đối tượng khác nhau) mà tôi nghi ngờ. Nhưng Hibernate khuyến cáo không nên sử dụng 'phiên bản' cho bất kỳ thứ gì khác trong ứng dụng. Vì vậy, càng suy nghĩ về nó thì tôi càng bị thuyết phục rằng 'phiên bản' nên ** không được bao gồm trong' equals() 'và' hashcode() '. – wajda