私は JSF 2.1、Netbeans 7.0.1、Glassfish 3.1.1、JPA + EJB を使用しています。
たとえば、User というエンティティ クラスがあり、エンティティ クラス UserType との参照 (多対 1 の関係) があります。
エンティティ UserType に関連付けられたテーブル user_type には、考えられるすべてのユーザー タイプが既にロードされており、このテーブルにデータを追加することは想定されていません。テーブル user_type のデータは、選択するためにのみ使用されます。
フォームの 1 つで、h:selectOneListBox タグを使用して、作成されるユーザーの UserType を選択するようにユーザーに依頼します。バッキング Bean で新しい UserType オブジェクトを作成し、選択した ID をそれに設定し、UserType を User エンティティ クラスに入れます。ただし、UserType の作成されたオブジェクトの他のすべてのフィールドは null です。
私の質問は、 User をデータベースに永続化すると、 JPA は、 User エンティティによって参照されるそのような ID を持つ UserType がデータベースに既に存在し、既存のレコードを更新 (マージ) し、新しいレコードを作成しようとしないことを「理解」します。または、データベースから必要なエンティティ UserType を ID でプリロードしてから、それを User に入れ、JPA に UserType を更新するように依頼する必要がありますか?