S2DAOでテーブル結合(N:1)

SQLの自動生成で、
テーブル結合のデータを取得できます。
(N:Nは、できなさそう)


テーブルEMPとDEPTを用意。

EMPテーブル

カラム
id
emp_id
emp_name
sal
dept_id

DEPTテーブル

カラム
id
dept_id
dept_name

daoクラス

    //Empテーブルの検索
    public List<Emp> selectEmp();

dtoクラス

package pkg.entity;

import java.util.Date;
import org.seasar.dao.annotation.tiger.Bean;
import org.seasar.dao.annotation.tiger.Column;
import org.seasar.dao.annotation.tiger.Relation;

/**
 * テーブルとの関連付けをするクラス
 */
@Bean(table="EMP")
public class Emp {

    public Integer id;
    public Integer emp_no;
         :
    //deptテーブルのdto
    public Dept dept;

    @Relation(relationNo=0,relationKey="DEPT_ID:ID")
    public Dept getDept(){
	return dept;
    }
}

@Relation(relationNo=0,relationKey="DEPT_ID:ID")
を記述することで、LEFT OUTER JOIN を実行する。

relationKeyの値は、結合する条件のカラム。


実行されるSQLは、下記のようになる。

SELECT EMP.id, EMP.emp_no, EMP.emp_name, EMP.sal, EMP.dept_id, dept.id AS id_0, dept.dept_no AS dept_no_0, dept.dept_name AS dept_name_0, dept.loc AS loc_0, dept.version_no AS version_no_0 FROM EMP LEFT OUTER JOIN DEPT dept ON EMP.DEPT_ID = dept.ID