Tôi đã cố gắng giải thích cách tốt nhất để xử lý xem thực tiễn tốt là thực hiện hashcode và bằng các thực thể (tôi có nghĩa là thực thể theo nghĩa chung) nhưng trong hầu hết các trường hợp, nó sẽ là một thực thể JPA).Để bằng và hashcode hoặc không phải trên các lớp thực thể, đó là câu hỏi
Trong Chương 24 của Hibernate thủ http://docs.jboss.org/hibernate/core/3.3/reference/en/html/best-practices.html nó nói này ...
Xác định các phím tự nhiên cho tất cả các đơn vị , và bản đồ chúng bằng cách sử . Thực hiện equals() và hashCode() để so sánh các thuộc tính tạo nên khóa tự nhiên.
Có ý nghĩa khi có .equals và .hashcode chỉ bao gồm các khóa tự nhiên này nhưng nếu bạn có nhiều cá thể cùng một thực thể (cùng một id tự nhiên, cùng mã băm)? Có vẻ như thực hành này có thể có những tác động tinh tế ở nơi khác trong ứng dụng của bạn. Có ai đã thử điều này trước đây trên quy mô lớn không?
cảm giác gì nó làm được bằng bằng phím nhưng không bằng bởi các thuộc tính? Nó giống như được bình đẳng bởi tham chiếu nhưng không bằng giá trị. –
thực thể mới sẽ không có khóa chính (nếu bạn đang sử dụng thay thế là cách tiêu chuẩn). Vì vậy, bằng sẽ không làm việc cho các thực thể mới nếu bạn đang sử dụng chìa khóa để so sánh. –
phương pháp nào bạn sử dụng cho các lớp liên tục 'equals()' và 'hashcode()' phương pháp sau đó? Một sự lựa chọn cần phải được thực hiện cho chúng vì chúng sẽ được gọi bởi Collection hoặc Hibernate code. –