Tôi đang đọc sách của Eric Evans về DDD và tôi có câu hỏi cho câu sau đây. Làm thế nào để bạn thực hiện phương pháp equals()
khi bạn không nên sử dụng các thuộc tính? Tôi đang sử dụng JPA và tôi có một thuộc tính id đó là duy nhất nhưng điều này không được thiết lập cho đến khi bạn thực sự tồn tại thực thể. Vậy bạn làm gì? Tôi đã thực hiện phương thức equals dựa trên các thuộc tính và tôi hiểu tại sao bạn không nên vì nó không thành công trong dự án của tôi.Các thực thể trong thiết kế điều khiển tên miền
Mục về thực thể:
Khi một đối tượng được phân biệt bởi bản sắc của nó, chứ không phải là thuộc tính của nó, làm cho chính này để định nghĩa của nó trong mô hình. Giữ nguyên định nghĩa lớp học đơn giản và tập trung vào tính liên tục của vòng đời và số . Xác định phương tiện phân biệt từng đối tượng bất kể biểu mẫu hoặc lịch sử của nó. Hãy cảnh giác với các yêu cầu gọi đối sánh đối tượng theo thuộc tính. Xác định một thao tác được đảm bảo để tạo ra một kết quả duy nhất cho mỗi đối tượng, có thể bằng cách gắn một biểu tượng được đảm bảo duy nhất. Phương tiện nhận dạng này có thể là đến từ bên ngoài hoặc có thể là mã định danh tùy ý được tạo bởi và cho hệ thống, nhưng phải tương ứng với nhận dạng sự phân biệt trong mô hình. Mô hình phải xác định nghĩa là điều tương tự.
http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215
có thể trùng lặp, xem http://stackoverflow.com/questions/5031614/the-jpa-hashcode-equals-dilemma – MRalwasser
id hoạt động tốt đối với tôi: http://stackoverflow.com/questions/7579404/using-auto-generated-id-of-hibenate-entity-object-in-the-equals-and-hashcode-met – NimChimpsky