En mi base de datos de SQL Server 2000, tengo una columna de marca de tiempo (en la función no en el tipo de datos) del tipo DATETIME
denominada lastTouched
establecida en getdate()
como valor/enlace predeterminado.¿Configura una columna de marca de tiempo JPA para ser generada por la base de datos?
estoy usando el Netbeans 6.5 generados clases de entidad JPA, y tienen esto en mi código
@Basic(optional = false)
@Column(name = "LastTouched")
@Temporal(TemporalType.TIMESTAMP)
private Date lastTouched;
Sin embargo, cuando intento poner el objeto en la base de datos que recibo,
javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: com.generic.Stuff.lastTouched
I He intentado configurar la configuración de @Basic
a (optional = true)
, pero eso arroja una excepción diciendo que la base de datos no permite null
valores para la columna TIMESTAMP
, que no tiene por diseño.
ERROR JDBCExceptionReporter - Cannot insert the value NULL into column 'LastTouched', table 'DatabaseName.dbo.Stuff'; column does not allow nulls. INSERT fails.
previamente Tengo que esto funcione en Hibernate pura, pero he sentido cambiado a JPA y no tienen idea de cómo decirle que esta columna se supone que debe ser generada en el lado de la base de datos. Tenga en cuenta que todavía estoy usando Hibernate como mi capa de persistencia JPA.
También es posible que desee agregar @Column (name = "LastTouched", insertable = false, actualizable = false) de usar la base de datos genera marcas de tiempo también con las instrucciones UPDATE de SQL. –
Gracias Juha. Estoy seguro de que eso me habría echado a perder más adelante en el camino. –
En realidad, al pensarlo más, creo que necesitaré la columna de actualización, ya que voy a necesitar actualizarla a través de Java cuando realice cambios en la columna. A menos que haya una manera de hacer la actualización de la columna en el lado de la base de datos de alguna manera. –