Top / Java / Seasar2 / Kuina-Dao / TIPS集

多対一の関連がある場合を設定したい場合

たとえば 給与の明細(多)と給与(一)の関連がある場合。

たとえばこんなコードだったとします。

  • 給与の明細
    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;
  }
  ....
}

一対多の関連を設定したい場合

次は、たとえば給与(一)に対して、明細(多)の関連を設定したいとします。

この場合は、親側のクラスに@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;
}

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Java / Seasar2 / Kuina-Dao / TIPS集

現在のアクセス:5072


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-05-16 (土) 23:25:34 (5684d)