[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 メーリングリストの案内