[Seasar-user:8791] 複数テーブルのJOIN読込について
fujihara
[E-MAIL ADDRESS DELETED]
2007年 6月 28日 (木) 20:38:51 JST
fujiharaといいます。
Seasar2で社内システムの開発に当たっています。
Churaプロジェクト(Teeda+S2DAO)でプロジェクト作成して
複数テーブルのJOINのSQLを書きEntityを作成して
DAOを作成してSELECTとしたところ
[ESSR0072]SQLで例外(SQL=[], Message=[Table 'roaso_db.rsbs007data' doesn't
exist], ErrorCode=1146, SQLState=42S02)が発生しました
org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[],
Message=[Table 'roaso_db.rsbs007data' doesn't exist], ErrorCode=1146,
SQLState=42S02)が発生しました
at org.seasar.extension.jdbc.util.DatabaseMetaDataUtil#addPrimaryKeys
(DatabaseMetaDataUtil.java#96)
at org.seasar.extension.jdbc.util.DatabaseMetaDataUtil#getPrimaryKeySet
(DatabaseMetaDataUtil.java#58)
at org.seasar.dao.impl.BeanMetaDataImpl#setupPrimaryKey
(BeanMetaDataImpl.java#328)
DAOの内容
-------------------------------------------
package jp.roaso.dao;
import jp.roaso.entity.Rsbs007data;
import org.seasar.dao.annotation.tiger.Arguments;
import org.seasar.dao.annotation.tiger.S2Dao;
@S2Dao(bean=Rsbs007data.class)
public interface Rsbs007dataDao {
@Arguments({"usrId","usrName"})
public Rsbs007data[] getPageData(String usrId, String usrName);
}
---------------------------------------------
Entityの内容
---------------------------------------------
package jp.roaso.entity;
import org.seasar.dao.annotation.tiger.Column;
public class Rsbs007data {
private String usrId;
private String usrName;
private String passwd;
private String usrMailaddr;
private Integer registFlg;
private Integer tantoKbn;
private Integer usrGrpId;
private String usrGrpname;
@Column("USR_ID")
public String getUsrId() {
return usrId;
}
public void setUsrId(String usrId) {
this.usrId = usrId;
}
略
@Column("USR_GRP_NAME")
public String getUsrGrpname() {
return usrGrpname;
}
public void setUsrGrpname(String usrGrpname) {
this.usrGrpname = usrGrpname;
}
}
---------------------------------------------
SQLの内容
---------------------------------------------
SELECT
A.USR_ID,
A.USR_NAME,
A.PASSWD,
A.USR_MAILADDR,
A.REGIST_FLG,
A.TANTO_KBN,
C.USR_GRP_ID,
C.USR_GRP_NAME
FROM
Usrmst AS A,
Usrgrpassigned AS B,
Usrgrp AS C
WHERE
A.USR_ID like /*usrId*/'%%' AND
A.USR_NAME like /*usrName*/'%%' AND
A.USR_ID = B.USR_ID AND
B.USR_GRP_ID = C.USR_GRP_ID
---------------------------------------------
三つのテーブルをジョインしています。
テーブルが無いといってるのは分かるのですが回避策が
いろいろやってもわかりません。
通常自動生成してくれるDAOはテーブル名と関連づいた
名前になっていますが複数テーブルをJOINした場合の名前は
規定されているのでしょうか?
テーブルアノテーションも試しましたがよく分かりません。
なにとぞご教授願います。
以上、宜しくお願いします。
コンピュータメネージメント株式会社
fujihara / [E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内