如果我使用名为Name
的不可变类来存储人名,并且有人想要更改他们的名字,则不应该更新他们的名字(基本上删除旧条目并插入新条目)?这似乎与不可变的定义(通过注释)相矛盾,因为更新实体将被忽略。如果需要更新存储在数据库中的不可变类,我该怎么办?它是否应该映射为@Immutable
,即使它是一个不可变的类?
答案 0 :(得分:1)
参考文献说:
当实体为只读时:
- Hibernate 不会检查实体的简单属性或 单端协会;
- Hibernate不会更新简单属性 或可更新的单端关联;
- Hibernate不会更新 只读简单属性或只读实体的版本 单端可更新关联已更改;
它还说:
在某些方面,Hibernate将只读实体视为与实体相同 这不是只读的:
- Hibernate将操作级联到实体中定义的关联 映射。
- 如果实体有集合,Hibernate会更新版本 变化会污染实体;
- 只读实体即可 删除即可。
所以,我认为你必须删除()实例,而不是自己再次使用新名称保存(),因为脏检查不会发生在只读实体上。