[Seasar-user:18523] Re: [S2JDBC]複数個の同じエンティティの結合がうまくいかない
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 9月 26日 (土) 02:00:00 JST
小林 (koichik) です.
Date: Fri, 25 Sep 2009 22:23:27 +0900
From: 岡部 央満 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18521] [S2JDBC]複数個の同じエンティティの結合がうまくいかない
> SubTblエンティティ
(略)
> @OneToOne
> @JoinColumn(name="MAIN_ID", referencedColumnName="RID")
> public MainTbl mainEnt1;
>
> @OneToOne
> @JoinColumn(name="MAIN_ID", referencedColumnName="RID")
> public MainTbl mainEnt2;
これだと,RID と MAIN_ID が 1 対 1 になることを
示していますが,
> SUB_TBL
> ------------------------
> MAIN_ID, ORD, VALUE
> ------------------------
> 1 0 A
> 1 1 B
> 2 0 C
> 2 1 D
> 3 0 E
> ------------------------
ということなので実際には 1 対多になってますね.
それを
> List<MainTbl> result =
> jdbcManager.from(MainTbl.class)
> .leftOuterJoin("subEnt1" , "subEnt1.ord = 0")
> .leftOuterJoin("subEnt2" , "subEnt2.ord = 1")
> .getResultList();
の結合条件で絞り込んでいるだけで,関連としては
1 対 1 ではないことに注意してください.
なので,@OneToOne ではなく,@OneToMany
(MainTbl) と @ManyToOne (SubTbl) を使って
ください.
また,主キー (@Id) がないのはサンプルで省略
しただけでしょうか?
--
<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 メーリングリストの案内