// 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents **多対一の関連がある場合を設定したい場合 [#r8009dcc] たとえば 給与の明細(多)と給与(一)の関連がある場合。 たとえばこんなコードだったとします。 -給与の明細 package nu.mine.kino.examples.entity; /** * @author Masatomi KINO * @version $Revision$ */ @Entity @Table(name="SALARY_DETAIL") public class SalaryDetail { @Id @GeneratedValue private Integer id; @Column(name = "PARENT_ID") private Integer parentId; @Column(name = "DETAIL_CODE") private Integer detailCode; private Long value; //Getter/Setterは省略。 } -給与 package nu.mine.kino.examples.entity; /** * @author Masatomi KINO * @version $Revision$ */ @Entity public class Salary { @Id @GeneratedValue private Integer id; @Temporal(TemporalType.DATE) @Column(name = "SALARY_DATE") private Date salaryDate; //Getter/Setterは省略。 } この場合は、明細側のクラスに@ManyToOneの関連を設定します。やり方は、もともとフィールドにFKがあるので、それをコメントアウト。そのフィールドのGetter/Setterも削除。代わりに、親クラスのフィールドとGetter/Setterを以下のように作成します。 @Entity @Table(name = "SALARY_DETAIL") public class SalaryDetail { @Id @GeneratedValue private Integer id; // @Column(name = "PARENT_ID") // private Integer parentId; @ManyToOne @JoinColumn(name = "PARENT_ID") private Salary salary; public Salary getSalary() { return salary; } public void setSalary(Salary salary) { this.salary = salary; } .... } **一対多の関連がある場合 [#r32e9470] たとえば給与(一)に対して、明細(多)の関連がある場合。 **一対多の関連を設定したい場合 [#r32e9470] 次は、たとえば給与(一)に対して、明細(多)の関連を設定したいとします。 この場合は、親側のクラスに@OneToMany の関連を設定します。やり方はフィールドにGetter/Setterを以下のように設定すればOK. @OneToMany(mappedBy="salary") <- mappedBy属性の値salaryは、SalaryDetailクラスのsalaryフィールドってこと private List<SalaryDetail> salaryDetail; public List<SalaryDetail> getSalaryDetail() { return salaryDetail; } public void setSalaryDetail(List<SalaryDetail> salaryDetail) { this.salaryDetail = salaryDetail; } ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}