[Seasar-user:13042] Re: [Dolteng] 0.28.0にて

Yamada [E-MAIL ADDRESS DELETED]
2008年 2月 25日 (月) 08:44:41 JST


やまだです。

作成済みのファイルを開いた際に
今回の現象に気付きました。

このようなテーブルに対して
CREATE TABLE T_HOGE
(
    HOGE_ID    NUMBER(9,0) NOT NULL,
    NAME_1     VARCHAR2(128) NOT NULL,
    NAME_2     VARCHAR2(128) NOT NULL
)

DTOを次のように定義して
public class HogeDto {
    private int hogeId;
    private String name1;
    private String name2;
}
public class HogeHogeDto {
    private String name1;
    private String name2;
}

次のようなDAOクラスがある場合
public class HogeDao {
    public JdbcManager jdbcManager;

    public HogeDto getHoge(int hoge) {
        return jdbcManager
            .selectBySql(
                HogeDto.class,
                "SELECT * FROM T_HOGE WHERE HOGE_ID=?",
                hoge)
            .getSingleResult();
    }

    public HogeHogeDto getHogeHoge(int hoge) {
        return jdbcManager
            .selectBySql(
                HogeHogeDto.class,
                "SELECT NAME_1,NAME_2 FROM T_HOGE WHERE HOGE_ID=?",
                hoge)
            .getSingleResult();
    }
}


public HogeDto getHoge(int hoge)
については
int hoge を int hogeId
に変更すればマーカは消えますが
public HogeHogeDto getHoge(int hoge)
に関しては、どうしたものかと思いまして。

以上、よろしくお願いいたします。

08/02/24 に Koichi Kobayashi<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 小林 (koichik) です.
>
> Date:    Sat, 23 Feb 2008 15:17:13 +0900
> From:    Yamada <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:13023] [Dolteng] 0.28.0にて
>
> > パッケージ xxx.dao に
> > クラス HogeDao を作成し
> > public HogeHogeDto getHoge(int a)
> > というメソッドを作成すると
> > a does not exist in xxx.dto.HogeHogeDto.
> > というエラーが表示されます。
> > (エラーの通りHogeHogeDtoにaというメンバはありません)
>
> HogeHogeDto がエンティティとみなされているようです.
> メソッドを作成する前に .sql ファイルがあれば
> エラーにならないのですが,.sql ファイルがない
> 状態でメソッドを作成すると,その時点では
> 「引数を条件としてエンティティを検索」と判断され,
> エンティティである HogeHogeDto には引数の
> プロパティがない,と解釈されてエラーとなるようです.
>
> また,その後で .sql ファイルを作成しても,それだけでは
> マーカが消えません.
>
> .sql ファイルを作成した後で Dao を適当に編集して
> 保存すると SQL を使った問い合わせと認識されて
> マーカが消えます.
>
> お手数ですが,.sql ファイルを作成してからメソッドを
> 追加するか,.sql ファイルを作成した後に Dao を
> 編集・保存することで対処してください.
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内