これは私のシナリオです。私は親テーブルFiles_Info
と子テーブルFiles_Versions
を持っています。JPA/Hibernate:子カラム値を挿入する前に親カラム値を更新する
create table files_info(
id bigint primary key,
name varchar(255) not null,
description varchar(255) not null,
last_modified TIMESTAMP,
latest_version integer default 0 not null
);
create table files_versions(
id bigint primary key,
file_id bigint references files_info(id),
version integer not null,
location text not null,
created TIMESTAMP,
unique(file_id, version)
);
これは、主にファイルとそのさまざまなバージョンを追跡するためのものです。ユーザーが新しいファイルの作成を開始すると(ファイルのバージョンはまだアップロードされていない)、名前、説明などの基本情報を持つfiles_info
テーブルにエントリが作成されます。 latest_versionは最初は0になります。
そして、ユーザが最初のバージョンをアップロードしたときに、エントリがそのFILE_IDためfiles_versions
テーブル内に作成され、親のlatest_version
+ 1親のがlatest_version
は現在1
に設定されているように、バージョン 値が設定されていますユーザーは、新しいファイル作成を開始したときにファイルの初期バージョンをアップロードすることもできます。その場合、親レコード はlatest_versionを1として作成し、対応するバージョン1の子レコードも作成します。
JPA/Hibernateを使用してこれを設計する方法はわかりません。
エンティティとリポジトリのクラスを作成しました。保存メソッドは独立して動作するようです。しかし、私は同時にlatest_version
アップデートを行う方法がわかりません。
これはJPA/Hibernateを使用して行うことができますか?それともデータベースのトリガーですか?
ありがとうございます。私はPrePersistが働くべきだと思います。私はPrePersistで注釈を付けたメソッドを既に持っています。そこで最後に修正されたタイムスタンプを更新します。それは私のためにストライクしなかった。 – Gnana