columnDefinition =“DATE DEFAULT SYSDATE”,不起作用

时间:2013-05-21 14:03:38

标签: java jpa

我正在使用此代码:

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

但是当我向表中插入一些数据时,它没有日期只有null的日期。

2 个答案:

答案 0 :(得分:1)

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

您需要确保列不会包含在insert语句中。为此,您需要更新@Column annoation,如:

@Column(..other properties.., insertable = false)

有关详细信息,请参阅here

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

@org.hibernate.annotations.Generated(org.hibernate.annotations.GenerationTime.INSERT)

Hibernate将自动为您执行所需的select查询。

如果您没有使用Hibernate,则需要自己select执行insert后获取生成的值。 JPA没有任何内容可以指明这应该自动完成。

答案 1 :(得分:0)

你可以使用类似的东西:

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