Uploaded image for project: 'S2Dao'
  1. S2Dao
  2. DAO-7

[Seasar-user:3605] JOINしないSQLなのにRelation先のインスタンスが取得できてしまう

XMLWordPrintable

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major Major
    • 1.0.35
    • Affects Version/s: 1.0.33
    • Component/s: s2dao
    • None
    • Environment:
      s2-extension-2.3.8
      s2-framework-2.3.8
      s2-dao-1.0.33

      以下のようなテーブル構造で、

      BOOK (本)
        BOOK_ID   not null (PK)
        BOOK_NAME not null 
        AUTHOR_ID not null (FK)
      
      AUTHOR (著者)
        AUTHOR_ID   not null (PK)
        AUTHOR_NAME not null 
      

      BOOKエンティティには以下のようなアノテーションがあり、

      public static final int author_RELNO = 0;
      public static final String author_RELKEYS = "AUTHOR_ID:AUTHOR_ID";
      

      DAOにはSQLアノテーションを付けて、BOOKだけを純粋に検索したいとします。

      public static final String getListAll_SQL = 
          "select BOOK_ID, BOOK_NAME, AUTHOR_ID from BOOK";
      

      この結果の個人的な期待は:

      • BOOKエンティティはAUTHORエンティティを保持しない(nullが返る)、

      ですが、実際は:

      • BOOKエンティティはAUTHORエンティティを保持しており、
      • そのAUTHORエンティティのAUTHOR_IDにはDB上の「著者ID」が存在します。
      • そのAUTHORエンティティのAUTHOR_NAMEはnull。

      です。

      RELNOやRELKEYSを設定した状態のエンティティを利用すると、
      SQLアノテーションなどで結合対象から外しても、
      主キーのみ存在する空のFK先エンティティは存在する。

      これは、S2Daoの仕様になりますでしょうか?

      これは業務上あまり問題にはなりませんが、自分はS2Daoを少し包含した
      フレームワークを開発しており、細かい絡みになりますが少し気になってます。

            Assignee:
            manhole manhole
            Reporter:
            manhole manhole
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved: