特定の列を更新しないようにhibernateに指示する方法

ユーザーに特定の値を更新する機会を与えるアプリケーションがあります。私はそれらの列に関する情報をユーザーに送信し、更新を受けたいと思います。

私は彼らが私に送信するものから作成された休止状態のエンティティを維持したいが、ユーザがアクセスできない列を更新しない。同様に、新しいエントリを要求する場合は、自分が送信したデータを使用して、既定の列に未記載の列を設定します。

簡単な方法やベストプラクティスはありますか?

それらの列について言及していないテーブルへの2番目のマッピングを作成する必要がありますか?

3
追加された
ビュー: 1

3 答え

私は、マッピングファイル上でプロパティupdate = "false"をマークすると思います。私は永続的にそれを行う方法がある場合は聞いてみたいので、私はそれらのフィールドを変更する必要がある何かを書いたら、それはそれを行うことができます。

6
追加された
update = "false"は私のケースではうまくいきません。(EDIT:autiallyそれはDBでは実際には更新されませんが、Hibernateエンティティは変更された不正なフィールドで読み込まれます。
追加された 著者 ITisha,

これらの列を更新したくない場合は、それらの列のセッターを呼び出さないでください。列のセッターが呼び出されない(または新しい値で呼び出される)場合、列は更新されません。

最初にHibernateでエントリをフェッチし、次に適切な列のセッタを呼び出して永続化する必要があります。そうすれば、変更したくないデータは変更されません。

1
追加された
私はそれをすることができたと思うが、それはやや不便だ。私は、ユーザーが私に与えたデータを取って、データベースからレコードを読み込み、それらをマージするメソッドを書いて、最後にレコードを永続化する必要があります。私は休止状態を使用していると考えて、私は簡単に降りています。私は、余分な作業であるHibernateについて言及してきましたが、余分なI/Oは必要ないと思います。
追加された 著者 Joe,
トリガを使用して変更/作成された日付のようにDB側で何かが管理されていると、そのデータを再選択せずに休止状態にすることはできません。 updatable = falseのポイントは、DBを生成するフィールド値をclobberではなく、休止状態にすることです。
追加された 著者 hsanders,

カラムの更新を避けるには、Hibernateでupdatable = falseを使用してください。

例えば:

@Column(name=CRE_TS, updatable=false)
private Date getCreTs(){
   return this.creTs;
} 
0
追加された