Sat*_*ish 4 java sql orm hibernate
考虑以下关联 Book has OneToMany Chapters
如果我执行:
session.save(book)
session.save(chapter)
session.getTransaction().commit()
Run Code Online (Sandbox Code Playgroud)
Hibernate 为 Book 生成插入查询并为 Chapter 生成插入查询
但是如果我执行:
session.save(chapter)
session.save(book)
session.getTransaction().commit()
Run Code Online (Sandbox Code Playgroud)
Hibernate 执行章节插入查询、书籍插入查询和章节更新查询。
有没有办法在 2 次插入而不是 2 次插入和 1 次更新中做到这一点?(假设主键生成类似于 Identity 和 Chapter.Book 可以为空)
那是因为你可能有Book 1..n Chapter
,cascade
设置为(至少)PERSIST
。这意味着每当保存一本书时,它的所有章节也都会保存。
因此,您实际上是在尝试两次保存这些章节。您不需要第二次保存(在第二个示例中)
第一个示例以这种方式工作,因为该章节已与会话相关联(也许您没有覆盖hashCode()
和equals()
方法),并且save()
根本不执行任何操作。
但这些都是猜测。你必须显示你的映射。