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