1

嘿,我需要从表中返回很长的日期(毫秒)。我需要访问的列在 oracle db 上,属于时间戳类型(名称 ROW_TMSTP)。

我所做的是:

@Column(name = "ROW_TMSTP")
@Override
@Temporal(TemporalType.TIMESTAMP)
public Date getEntityTimeStamp() {
    return entityTS;
}

@Transient
public Long getVersion() {
    return entityTS.getTime();
}

这有效..有时。如果我想选择版本高于 x 的记录,它不起作用。

如何编写一个在时间戳上工作得很好的实体类?

请不要试图说服我改变数据库结构。我必须坚持现有的,我必须通过 getVersion 返回一个字段。

谢谢!

编辑

getVersion 中缺少映射使我的选择查询导致标识符无效。删除@Transient和添加正确的映射解决了这个问题。

@Column(name="ROW_TMSTP", updatable=false, insertable=false)
public Long getVersion() {
     return entityTS.getTime();
}

一个有点棘手,虽然比较久远......但这不是我的问题。

4

1 回答 1

0

如果我想选择版本高于 x 的记录,它不起作用

一种替代方法是,而不是在 where 子句中使用版本,您可以将 long 转换为时间戳并在 where 子句中使用 entityTimestamp 我猜应该这样做

于 2012-04-20T14:09:18.413 回答