###################################### 【非推奨】片方向OneToManyのEntity ###################################### クラス定義概略 ============================ .. caution:: | SQLの発行数が多い、コードが冗長等、問題が多いため非推奨 .. image:: ./Images/class_one_to_many.png :scale: 50% - Companyエンティティ - Employerエンティティ の、片方向1対多の関係を考える。 :: 【Companyエンティティの定義】 @id @Column(name = "company_id") String companyId; @Column(name = "abstract") String abstract; @OneToMany @JoinColumn(name = "company_id") private List employers // this.employersにemployerエンティティをaddするメソッド public void add(Employer e){-略-} - @JoinColumn(name = 子エンティティのFK)を指定しないと、中間テーブルが作成されてしまう(joinTable戦略となる) :: 【Employerエンティティの定義】 @id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "employer_no") Integer employerNo; @Column(name = "name") String name; - 子エンティティ側には、関連の設定は行わない。 実行例 ============================ :: var c = Company.build() -略- .build(); var e = Employer.build() -略- .build(); c.add(e) // Entity間の関連付け repositoy.save(e) // 子エンティティを永続化 repositoy.save(c) // 親エンティティを永続化 :: Insert employer_table (employer_no, name) Values -略- Insert company_table (company_id, abstract) Values -略- Update employer_table Set company_id = -略- // 子エンティティの外部キーのUpdateが自動で挿入される .. caution:: | javaコード上、親子双方ともに永続化する必要がある & Update文が余計に発行されている | よほどのことが無い限り1対多の関係は次の双方向の設定を使用すること