[Seasar-user:16109] [S2JDBC] innerJoin と leftOuterJoin で同じ Entity を指定したい

Shotaro Tsubouchi [E-MAIL ADDRESS DELETED]
2008年 10月 25日 (土) 09:53:23 JST


ショータローこと坪内です。

親子関係にある Entity、Foo と Baa において、
ID が 1 の Baa を持っている Foo を取得し、
その Foo 毎に関連する Baa も取得したい場合、

select() // jdbcManager.from(Foo.class)
    .innerJoin(baaList(), false, eq(baaList().baaId(), 1))
    .leftOuterJoin(baaList())
    .getResultList();

上記を実行して、以下のような結果を取得したいのですが、

List
  +- Foo1
       +- Baa1
       +- Baa2
       +- Baa3
  +- Foo2
       +- Baa1

以下の例外が上がってしまい実行できません。

org.seasar.extension.jdbc.exception.JoinDuplicatedRuntimeException: [ESSR0707]エンティティ(Foo)の結合(baaList)が重複しています。
	at org.seasar.extension.jdbc.query.AutoSelectImpl.getInverseEntityMeta(AutoSelectImpl.java:744) 


ひとまず、AutoSelectImpl の 774 行目をコメントアウトして
例外を無視してみたところ、想定していたクエリーを発行できました。
結合条件の重複チェックが、innerJoin と leftOuterJoin で
分かれていれれば良いんですかね?

よろしくお願いします。



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