Проблемы с использованием @PreUpdate

I have the following class:

    @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();
  }

This class is used by all my entity classes.

So I have the following class

@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;

And

@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;

So, when I create a new customer I get the following error:

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)

What am I doing wrong here.

5
задан skaffman 8 November 2010 в 08:44
поделиться