に参照を交差させ、両方を設定しますidProjectはdbではnullにできないので、プロジェクトがまだ作成されていないのでIDがないのでエラーが発生します。私はメソッドを作成するには、実行して、それを解決することができます知っている:Hibernateは、私は2つのエンティティ、プロジェクトとProjectFeeを持って作成
- 各1
- の更新プロジェクト
これは一種の「汚い」方法なので、自動的にこれを行う方法があるかどうかを知りたいのですが。
に参照を交差させ、両方を設定しますidProjectはdbではnullにできないので、プロジェクトがまだ作成されていないのでIDがないのでエラーが発生します。私はメソッドを作成するには、実行して、それを解決することができます知っている:Hibernateは、私は2つのエンティティ、プロジェクトとProjectFeeを持って作成
これは一種の「汚い」方法なので、自動的にこれを行う方法があるかどうかを知りたいのですが。
変更これまでごProjectFees
マッピング:
<many-to-one name="idProject" class="com.gesmifid2.common.model.Project">
<column name="id_project" />
</many-to-one>
編集:
あなたProjectFeeクラスは次のようになります。
public class ProjectFee implements Serializable {
//some more fields
private Project project; //project ProjectFee is related to
}
そして、あなたはProject
に新しいProjectFee
を追加するたびに、そのProject
をProjectFee
に設定する必要があります。 Project
クラスのメソッドの例:あなたが密接にあなたのProjectFee
クラスを見てみると、(外部キーid_project
など)それが、これは何とかクラスProject
に関連していることを知る方法はありません
public void addProjectFee(ProjectFee pf){
fees.add(pf);
pf.setProject(this);
}
。そのため、両方のオブジェクトを一緒に保存すると、ProjectFee
クラスは、Project
クラスの列番号id_project
を入力する必要があることを知りません。
は二つの可能性があります -
Project
オブジェクトを保存し、その後ProjectFee
オブジェクトにIDを提供することで、(あなたが質問で述べたように)あなたが自分でid_project
列を移入します。Project
のプロパティをid_project
に設定してエンティティで外部キー関係を作成し、両方のエンティティを列id/id_project
に参加させます。希望があれば。
リレーションの両側に参照を設定し、それを永続化してみてください。 –
@AbdullahKhan問題は、プロジェクトがデータベースにまだ存在しないため、私はProject.idを持っていないので、私はそれを行うことができないということです。 – Aldeguer