初めてプロジェクトで persist() メソッドを使用しています。JPA では、プロバイダーとして Hibernate を使用しています。ケースは至ってシンプル。私は2つのテーブルを持っています
- Company - Company_id (PK、シーケンス)、G_Company_id (これも一意)
- CP_Doc - Chronicle_id (PK)、Company_id (FK から上記の Company_id))
現在、ある特定の会社の CP_Docs があります。エンティティの作成に成功しました(createNativeQuery、JPAのcreateQueryで作業しています)。コレクションの cascade = CASCADE.ALL についても言及しました。
永続化するために、次のコードを記述します。
Company company = new Company();
company.setGCompanyId(7);
for(/* Get all docs for a particular company having id = 7 */) {
CP_Doc cpDoc = new CP_Doc();
cpDoc.setChronicleId(/* some chronicle id from the loop */);
cpDoc.setCompany(company);
entityManager.persist(cpDoc);
}
テーブル間の関係は、1 つの会社が多くの cp_doc を持つことができるということです。したがって、CP_Doc テーブルは所有者テーブルです。CP_Doc 側から永続化してみました。Company Entity側からも永続化できますか。親切に専門家を助けてください:)