title: JPA @PreUpdate not called on all entities
body: <p>I have an <code>@MappedSuperclass</code> that contains metadata stuff like creation and last modified date. All my entities extend this class. The class also has a method annotated with <code>@PreUpdate</code> that set these properties before the according action.</p>
  
  <p>What is currently driving me crazy is that this work for entity A and C but not for B. They all extend this <code>BaseEntity</code> directly. Basically there is 0 reason they should behave differently. Even more confusing is that <code>@PrePresist</code> is called correctly on all of the entities, also B.</p>
  
  <p>Anyone has an idea why this happens? It's driving me nuts...</p>
  
  <pre><code>public class A extends BaseEntity {}
  
  public class B extends BaseEntity {}
  
  public class C extends BaseEntity {}
  
  @MappedSuperclass
  public abstract class BaseEntity implements Serializable {
  
      @Getter
      @Setter(AccessLevel.PROTECTED)
      @Version
      private Long version;
  
      @Getter
      @Setter(AccessLevel.PROTECTED)
      @Temporal(TemporalType.TIMESTAMP)
      @Column(name = "created")
      private Date created;
  
      @Getter
      @Setter(AccessLevel.PROTECTED)
      @Temporal(TemporalType.TIMESTAMP)
      @Column(name = "last_modified")
      private Date lastModified;
  
      @Getter
      @Setter(AccessLevel.PROTECTED)
      @Column(name = "created_by")
      private String createdBy;
  
      @Getter
      @Setter(AccessLevel.PROTECTED)
      @Column(name = "last_modified_by")
      private String lastModifiedBy;
  
      @PreUpdate
      public final void updateMetadata() {
          lastModified = new Date();
          if (SecurityContextHolder.getContext().getAuthentication() != null) {
              lastModifiedBy = SecurityContextHolder.getContext()
                      .getAuthentication().getName();
          }
      }
  
      @PrePersist
      public final void createMetadata() {
          created = new Date();
          lastModified = created;
          if (SecurityContextHolder.getContext().getAuthentication() != null) {
              final String userName = SecurityContextHolder.getContext()
                      .getAuthentication().getName();
              lastModifiedBy = userName;
              createdBy = userName;
          }
      }
  }
  </code></pre>