2012-01-19 10 views
2

エンティティの一部のメンバーを更新クエリで「無視された」とマークすることはできますか?更新時にHibernateがエンティティメンバーを無視できますか?

私は基本的に、エンティティを持っていて、それを更新することができます。しかし、エンティティのすべてのメンバーが一度設定されると更新することはできません。したがって、私がSpringを使用してフォームデータをエンティティにバインドすると、フォームに公開されていないフィールドはすべてnull値を持ちます。エンティティが更新されると、マップされた列にはnullの値が書き込まれます。

私は変更不可能な値を入れましたが、現在はフォームの値を隠していますが、これは最適な解決策ではないと思います。良いものはありますか?

ありがとうございました。

答えて

7

最高の解決策は、フォームフィールドからエンティティの新しいインスタンスを再構築することを避けることです。代わりに、エンティティの既存の完全に入​​力されたインスタンスを取得し、フォームにあるフィールドの値を変更してから、このエンティティをマージします。

代わりに、カラムを更新不可能(@Column(updatable = false))としてマークすることができますが、これは、一般的には良い考えではないと思われるすべてのユースケースについてカラムを更新不可能にします:一部のユーザーは変更できませんが、他のユーザーや管理者のデータ移行ツールによって変更される可能性があります。その場合、列を更新不可として設定すると迷惑になります。

関連する問題