[seasar-php:128] S2DaoのDTOについて
ISHITOYA Kentaro
[E-MAIL ADDRESS DELETED]
2007年 5月 7日 (月) 17:55:45 JST
石戸谷と申します。
S2Daoを最近使わせていただいているのですが、わからないことがあるので質問
させてください。
バージョンは、1.1.2です。
・DTOで自動検索SQLを生成しようとしても生成されない。
DAOに、
public function findByPersonsSearchCondition(PersonsSearchCondition $dto);
というメソッドを定義して、
class PersonsSearchCondition{
public $nickname = "hogehoge";
public function setNickname($nickname){
$this->nickname = $nickname;
}
public function getNickname(){
return $this->nickname;
}
}
という、DTOを定義しました。
この状態で、
$dao = ComponentFactory::getComponent("AutoPersonsDao");
$entity = new PersonsSearchCondition();
$entity->setNickname("mogemoge");
$entities = $dao->findByPersonsSearchCondition($entity);
としても、WHERE句が生成されません。いろいろおってみたのですが、
S2DaoInterceptor.class.phpの45行目あたりで、sqlをダンプすると、
/*BEGIN*/ WHERE /*END*/
のように、最後に空のWHERE句が生成されていました。
いまいちよくわかっていないのですが、S2Dao_DaoMetaDataImpl.class.phpの485
行目の、
if($dmd->hasPropertyType($aliasName)){
continue;
}
という、命令をコメントアウトすると、意図したとおりに動作します。あるい
は、DTOの定義で、
class PersonsSearchCondition{
const nickname2_COLUMN = "nickname";
public $nickname2;
public function setNickname2($nickname2){
$this->nickname2 = $nickname2;
}
public function getNickname2(){
return $this->nickname2;
}
}
のようにすると、やはり意図したとおりに動作します。
何か根本的にやり方が間違っているような気がしています。
問題の解決方法あるいはポインタをご教示いただければ幸いです。
よろしくおねがいいたします。
seasar-php メーリングリストの案内