1

テーブルから Date を long (ミリ秒) で返す必要があります。アクセスする必要がある列は oracle db にあり、Timestamp タイプ (名前は ROW_TMSTP) です。

私がやったことは次のとおりです。

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

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

それはうまくいきます..時々。バージョンが x より大きいレコードを選択したい場合は機能しません。

タイムスタンプを long としてうまく機能させるエンティティ クラスを作成するにはどうすればよいですか?

そして、データベース構造を変更するように私を説得しようとしないでください..私はそこにあるものに固執しなければならず、getVersion によってフィールドを返さなければなりません。

ありがとう!

編集

getVersion にマッピングがないため、select クエリで無効な識別子が生成されました。適切なマッピングを削除@Transientして追加すると、問題が解決しました。

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

1 つは少しトリッキーでしたが、これまでの長い期間を比較すると... しかし、それは私の問題ではありません。

4

1 に答える 1

0

バージョンがxより高いレコードを選択したい場合は機能しません

1つの代替方法は、where句でversionを使用する代わりに、longをtimestampに変換し、それを実行する必要があるwhere句でentityTimestampを使用することです。

于 2012-04-20T14:09:18.413 に答える