這是我的場景。我有一個父表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。
然後,當用戶上傳的第一個版本,在files_versions
表,瞭解的file_id和版本 值中創建條目設置爲父母的latest_version
+ 1,家長latest_version
現在設置爲1
的用戶還可以在他/她啓動新文件創建時上載該文件的初始版本。在這種情況下,父記錄 將使用latest_version創建爲1以及相應的版本1子記錄。
我不知道如何使用JPA/Hibernate進行設計。
我寫了我的實體和存儲庫類和保存方法似乎獨立工作。但我不知道如何同時更新latest_version
。
這可以使用JPA/Hibernate完成嗎?或者它應該是一個數據庫觸發器?
感謝您的建議。我認爲PrePersist應該工作。我已經有了一個用PrePersist註釋的方法,我更新了最後修改的時間戳。它並沒有爲我着想。 – Gnana