開発中のプロジェクトのORMとしてORMLiteを試しています。いくつかの監査フィールド(つまり、updatedby、updatedtimeなど)を持つテーブルにJavaクラスをマッピングしています。監査フィールドは、トリガーを使用してデータベースによって維持され、ユーザーがどのフロントエンドを使用していても、レコードが更新されるときにこれらのフィールドが常に正しく更新されるようにします。
レコードが最後に更新された日時をユーザーに通知するために、これらのフィールドをクライアントアプリケーションに含める必要がありますが、ユーザーはこれらのフィールドを変更できません。ORMLiteがこれらのフィールドの更新を実行したり、挿入ステートメントに含めたりしないように、クラスに注釈を付ける方法はありますか。これらのフィールドが更新ステートメントに含まれている場合、データベースは更新を拒否します(これが、データベースから照会された元の値を単に書き戻すことができない理由です)。
Javaフィールドで注釈を使用しようとしました@DatabaseField(persisted = false)
が、クエリがまったく実行されないため、Javaオブジェクトにこれらのフィールドが入力されることはありません。
基本的に、これらのフィールドをSELECT
ステートメントに含める必要がありますが、INSERT
またはステートメントには含めないでください(注釈UPDATE
と同等)。@DatabaseField(immutable = true)