title: Entities in domain driven design
body: <p>I am reading Eric Evans book about DDD and I have a question to the following quote. How do you make your <code>equals()</code> method when you should not use the attributes? I am using JPA and I have a id attribute which is unique but this is not set until you actually persist the entity. So what do you do? I have  implemented the equals method based on the attributes and I understand why you shouldn't because it failed in my project.</p>
  
  <p><strong>Section about entities:</strong></p>
  
  <blockquote>
    <p>When an object is distinguished by its identity, rather than its
    attributes, make this primary to its definition in the model. Keep the
    class definition simple and focused on life cycle continuity and
    identity. Define a means of distinguishing each object regardless of
    its form or history. Be alert to requirements that call for matching
    objects by attributes. Define an operation that is guaranteed to
    produce a unique result for each object, possibly by attaching a
    symbol that is guaranteed unique. This means of identification may
    come from the outside, or it may be an arbitrary identifier created by
    and for the system, but it must correspond to the identity
    distinctions in the model. The model must define what it means to be
    the same thing.</p>
  </blockquote>
  
  <p><a href="https://rads.stackoverflow.com/amzn/click/com/0321125215" rel="noreferrer" rel="nofollow noreferrer">http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215</a></p>