JPA清空不更新注释

时间:2012-02-06 13:41:35

标签: string jpa annotations

我有一个名为User的实体对象,它代表具有典型用户信息的应用程序用户,包括密码。 我已经为每个用户信息提供了编辑选项,该用户可以编辑和更新他的信息。 其中一个编辑字段是密码,但我将其保留为空字段,只有用户可以输入新密码而无法查看他/她当前的密码。我想为用户提供在他/她不想更改密码时不输入密码的选项。 不幸的是,当他将密码字段保持为空时,Hibernate用空字符串作为密码更新用户对象。 我正在寻找一个JPA注释,我告诉Hibernate当它为空或空时不更新密码字段。

有没有人知道可行的方法?

最佳

2 个答案:

答案 0 :(得分:1)

您不想在页面上显示用户的密码。精细。但解决方案不是从User对象中删除密码!这在域模型方面没有任何意义;它推迟了用户界面要求。

相反,您应该正常加载密码,而不是在页面上显示密码。然后,您需要在页面和处理密码更新的User对象之间编写一些自定义逻辑。

答案 1 :(得分:0)

  • 为您的类定义实体监听器以实现@EntityListeners的回调事件,然后您可以在@PreUpdate方法中检查空/空字符串等。

  • 实施Cloneable界面&用户更新克隆的对象,然后如果需要,只能将所需的更改应用回原始实体&坚持下去。这样,以前的字段(密码)将不受影响。

  • 密码可以包含@Transient的临时字段,因为它未在数据库中检索或保留,可用于编辑页面。如果更改了,请将其复制到持久字段,否则不会影响数据库的瞬态。