1

開発中のプロジェクトのORMとしてORMLiteを試しています。いくつかの監査フィールド(つまり、updatedby、updatedtimeなど)を持つテーブルにJavaクラスをマッピングしています。監査フィールドは、トリガーを使用してデータベースによって維持され、ユーザーがどのフロントエンドを使用していても、レコードが更新されるときにこれらのフィールドが常に正しく更新されるようにします。

レコードが最後に更新された日時をユーザーに通知するために、これらのフィールドをクライアントアプリケーションに含める必要がありますが、ユーザーはこれらのフィールドを変更できません。ORMLiteがこれらのフィールドの更新を実行したり、挿入ステートメントに含めたりしないように、クラスに注釈を付ける方法はありますか。これらのフィールドが更新ステートメントに含まれている場合、データベースは更新を拒否します(これが、データベースから照会された元の値を単に書き戻すことができない理由です)。

Javaフィールドで注釈を使用しようとしました@DatabaseField(persisted = false)が、クエリがまったく実行されないため、Javaオブジェクトにこれらのフィールドが入力されることはありません。

基本的に、これらのフィールドをSELECTステートメントに含める必要がありますが、INSERTまたはステートメントには含めないでください(注釈UPDATEと同等)。@DatabaseField(immutable = true)

4

1 に答える 1

1

面白いパターン。 ORMLiteは、当時この機能をサポートしていませんでしたが、バージョン4.46以降はサポートするようになりました。

@DatabaseField(readOnly=true)注釈フィールドができました。

于 2013-03-27T13:16:19.813 に答える