Java columnDefinition=";日期默认SYSDATE";,don';行不通

Java columnDefinition=";日期默认SYSDATE";,don';行不通,java,jpa,Java,Jpa,我正在使用以下代码: @Column(name = "FECHA_CREACION_TIMESTAMP",columnDefinition="DATE DEFAULT SYSDATE", insertable=false) @Temporal(TemporalType.TIMESTAMP) private Date fechaCreacionTimestamp; 但是,当我向表中插入一些数据时,表中没有日期,只有空的日期。更新的答案:(现在我知道您正在使用Oracle) 您需要的是确保该列不

我正在使用以下代码:

@Column(name = "FECHA_CREACION_TIMESTAMP",columnDefinition="DATE DEFAULT SYSDATE", insertable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date fechaCreacionTimestamp; 
但是,当我向表中插入一些数据时,表中没有日期,只有空的日期。

更新的答案:(现在我知道您正在使用Oracle)

您需要的是确保该列不包含在insert语句中。为此,您需要更新
@列
注释,如:

@Column(..other properties.., insertable = false)
有关更多详细信息,请参阅

现在,您还需要确保在执行
insert
之后,生成的值在域对象中可用。如果您使用的是Hibernate,并且不介意使用Hibernate注释,那么可以在字段中添加以下注释

@org.hibernate.annotations.Generated(org.hibernate.annotations.GenerationTime.INSERT)
Hibernate将自动为您执行所需的
选择
查询


如果您没有使用Hibernate,则在执行
插入操作后,您需要自己执行
选择
以获取生成的值
JPA
没有任何东西可以指定这应该自动完成。

您可以使用类似于:

@Column(name = "FECHA_CREACION_TIMESTAMP",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP", insertable=false)
@Temporal(TemporalType.TIMESTAMP)
private Date fechaCreacionTimestamp; 

DATE默认SYSDATE
是有效的SQL吗<代码>列定义
。向我们展示您的
插入
语句。为了使默认值为“kick In”,您不能在列列表中指定该列。我在表中插入了以下方法:public void insertarDatos(){PruebasFechas pruebas=new PruebasFechas();pruebas.setPruebaId(new BigDecimal(1));getFacade().create(pruebas);}答案中提到的解决方案是否不起作用?MySQL没有名为SYSDATE的函数-Oracle有。它有。