title: Issues with the usage of @PreUpdate
body: <p>I have the following class:</p>
  
  <pre><code>    @MappedSuperclass
  public abstract class MappedModel
  {
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      @Column(name = "id", nullable = false, unique = true)
      private Long mId;
  
      @Temporal(TemporalType.TIMESTAMP)
      @Column(name = "rec_created_dtm", nullable = false, updatable = false)
      private Date recordCreatedDTM;
  
      @Column(name = "rec_cre_user_id", nullable = true, updatable = false)
      private Long recordCreatedUserId;
  
      @Temporal(TemporalType.TIMESTAMP)
      @Column(name = "last_update_dtm", nullable = false)
      private Date lastUpdateDTM;
  
      @Column(name = "last_update_user_id", nullable = true)
      private Long lastUpdateUserId;
  
  //  @PrePersist
  //  protected void onCreate()
  //  {
  //      this.lastUpdateDTM = this.recordCreatedDTM = new Date();
  //  }
  //
  //  @PreUpdate
  //  protected void onUpdate()
  //  {
  //      lastUpdateDTM = new Date();
  //  }
  
    @PrePersist
    @PreUpdate
    protected void updateDates() {
      if (this.recordCreatedDTM == null) {
          this.recordCreatedDTM = new Date();
      }
      lastUpdateDTM = new Date();
    }
  </code></pre>
  
  <p>This class is used by all my entity classes.</p>
  
  <p>So I have the following class</p>
  
  <pre><code>@Entity
  @Table(name="customer")
  public class Customer extends MappedModel implements Serializable
  {
  
      /**
     * 
     */
    private static final long serialVersionUID = -2543425088717298236L;
  
  
      @OneToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
      @JoinColumn(name="address_id",nullable=true,updatable=true,insertable=true)
      private Address mAddress;
  </code></pre>
  
  <p>And</p>
  
  <pre><code>@Entity
  @Table(name="address")
  public class Address  extends MappedModel implements Serializable
  {
  
      /**
     * 
     */
    private static final long serialVersionUID = -3505413538055124608L;
  
    @Column(name="address_line_1", length=150, nullable=false)
    private String mAddressLine;
  
    @Column(name="city", length=150, nullable=false)
    private String mCity;
  
    @Column(name="state", length=2, nullable=true)
    private String mState;
  
    @Column(name="postal_code", length=10, nullable=false)
    private String mPostalCode;
  </code></pre>
  
  <p>So, when I create a new customer I get the following error:</p>
  
  <pre><code>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: vsg.ecotrak.dataaccess.domain.Address.lastUpdateDTM; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: vsg.ecotrak.dataaccess.domain.Address.lastUpdateDTM
  
  org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583)
  org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
  javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  </code></pre>
  
  <p>What am I doing wrong here. </p>