監査目的で、ユーザー テーブルとの ManyToOne 関係を含む永続クラスがあります。実際、すべてのクラスにこれらのフィールドがあり、User クラスも含まれます。
public class MyClass implements Serializable {
@Fetch(value=FetchMode.SELECT)
@ManyToOne(optional=false, fetch=FetchType.LAZY)
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "CREATE_USER_ID")
public User getCreatedBy() {
return createdBy;
}
@Fetch(value=FetchMode.SELECT)
@ManyToOne(optional=false)
@NotFound(action=NotFoundAction.IGNORE)
@JoinColumn(name="USER_ID")
public User getLastUpdatedBy() {
return lastUpdatedBy;
}
}
これをさらに改善するために、ほとんどのテーブルの監査フィールドを CHAR(8) にしましたが、T_USER のフィールドは VARCHAR2(8) にしました。つまり、それらに外部キーを作成することはできません。
とにかく、MyClass のクエリはクエリを開始して監査フィールドにデータを入力し、次にクエリを開始してユーザーの監査フィールドにデータを入力します。
監査フィールドが必要になることはめったにないので、それらを遅延させたいと考えています。残念ながら、私はここで私に多くのことを働いていると思います。特に、スキーマの設計が不十分です。
誰か助けてくれませんか?
ジェイソン