我认为我有一个相当简单的任务,即在根据某些条件向表中添加新记录时手动递增 ID。
假设我有表书和章。Chapter 具有自动递增的 ChapterId、BookId 的外键和 ChapterNo。每次我向书中添加章节时,我都希望 ChapterNo 为该章节所属的特定书籍增加一。
可以通过简单的 SQL 语句完成:插入章节 (BookId, ChapterNo) 值 (XXX, select max(ChapterNo) + 1 from chapter where BookId = XXX)。但是有没有办法在 JPA 中做到这一点并避免竞争条件(如果我先阅读 max ChapterNo 然后进行插入,就会发生这种情况)
更新:到目前为止我想出的唯一合理的解决方案:实现负责递增 ChapterNo 的 DB 触发器。那么至少我在 JPA 端不需要任何本机查询