Spring 3.2 と hibernate-core 4.1.4 と hibernate-jpa-2.0.1 を使用しています。アプリケーション リソース ファイルには、正しいオブジェクトがすべて含まれています。
子オブジェクト RoleEntity があり、それには User と Award の 2 つの親があるため、userId と awardId は既に存在する外部キーであり、役割エンティティを作成するには存在しなければなりません。
public class RoleEntity implements Serializable
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "role_id")
private long roleId;
@Column(name = "role_description")
private String roleDescription;
@Column(name = "role_name")
private String roleName;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private UserEntity user;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "award_id")
private AwardEntity award;
... getters/setters
... hash/equals/toString
}
私のDAO挿入は非常に単純に見えます:
@Override
public RoleEntity saveRoleEntity(RoleEntity role)
{
logger.debug("saveRoleEntity: role=" + role);
return role;
}
このコードの単体テストを行ったところ、既存の roleId を選択すると、User と Award が完全に取り込まれた状態で、読み込まれたオブジェクトを完全に取得できることが確認できました。
ただし、新しいロールを挿入するときは、次のようにします。
- roleId を 0 に設定し、役割の説明を ...
- userEntity を作成し、ID のみを設定します。この ID は既に存在し、新しいものではありません
- awardEntity を作成し、ID のみを設定します。この ID は既に存在し、新しいものではありません
私はセーブを成功させることができ、これは素晴らしいです!!!! 私のために働きます。そして、新しいオブジェクトの戻り値では、新しい roleId が返されていることがはっきりとわかります!!! 説明など、RoleEntity の他のすべてのフィールドがあります。
しかし、私が望んでいるのは、RoleEntity の User フィールドと Award フィールドが、挿入後に選択したかのように完全に入力されることです。これは可能ですか?
これらのオブジェクトを取得してからこのオブジェクトに割り当てるために、ユーザーテーブルとアワードテーブルを選択しないことをお勧めしますが、それを行う必要がある場合は問題ありません。
さらに情報を提供する必要がある場合は、お知らせください。事前に助けてくれてありがとう。