更新时Hibernate可以忽略实体成员吗?

时间:2012-01-19 10:46:16

标签: hibernate spring

是否可以在更新查询中将实体的某些成员标记为“已忽略”?

我基本上有一个实体,可以更新。但并非所有实体成员都可以在设置后更新。因此,当我使用Spring将表单数据绑定到我的Entity时,未在表单上公开的字段都具有空值。更新实体后,映射列中会写入null个值。

我已经把不可更改的值暂时隐藏了表单值,但我不认为这是最好的解决方案。还有更好的吗?

感谢。

1 个答案:

答案 0 :(得分:7)

最好的解决方案IMO是避免从表单字段重构实体的新实例。相反,采用现有的,完全填充的实体实例,更改表单中字段的值,然后合并此实体。

另一种方法是将列标记为不可更新(使用@Column(updatable = false)),但这将使列不可更新用于所有用例,我认为这不是一个好主意,通常:如果某些用户可能无法更改某些字段,但可能被其他用户或管理数据迁移工具更改,则将该列设置为不可更新将会很烦人。