2016-10-14 5 views
0

次のエンティティを考えてみてください:は、マッピングされたエンティティのプロパティは読み取り専用

@Entity 
public class MyEntity implements Serializable { 

    @Id 
    private String id; 

    @OneToOne 
    private Person person; 
} 

@Entity 
public class Person implements Serializable { 

    @Id 
    private String id; 

    private String name; 

    // ... many more properties which should be read-only 
} 

時々、マッピングされたPersonnameが変更され、Hibernateは更新ステートメントを生成します。しかし、私はこれらが起こることを望んでいません。

マッピングされpersonのプロパティ読み取り専用をマークする方法はありますか?マッピングされたpersonのIDへ

変更は(私が意味する、異なるpersonMyEntityに取り付けられている。)しかし、まだHibernate更新MyEntityを行う必要があります。ドキュメントから

答えて

1

@Column(updatable=false)

:更新可能(オプション):カラムには、私はまだ人間のことをしたい

+0

はこれが考慮されています更新ステートメント(真のデフォルト)の一部とするかどうかmyEntityは変更可能です。 "name"のようなプロパティは読み取り専用でなければなりません。 (明確にするために質問に情報を追加しました) – yglodt

+0

はい、 'Person'エンティティの更新時に' Person'''''''の '@Column(updatable = false)'を 'Person'''の' name'に置くことによって、その列だけが残されます。あなたが親のエンティティに別の人物を割り当てるのを止めるべきではありません。 – veljkost

+0

私は何が必要なのか説明するのに困っている...私は一般的に人を更新したい。それらがMyEntityにマッピングされている間だけではありません。 – yglodt

関連する問題