[Seasar-user:18521] [S2JDBC]複数個の同じエンティティの結合がうまくいかない
岡部 央満
[E-MAIL ADDRESS DELETED]
2009年 9月 25日 (金) 22:23:27 JST
お世話になります。岡部と申します。
以下のようなテーブルがあり、
CREATE TABLE MAIN_TBL(
"RID" NUMBER(10, 0) NOT NULL
)
CREATE TABLE SUB_TBL(
"MAIN_ID" NUMBER(10, 0) NOT NULL,
"ORD" NUMBER(10, 0) NOT NULL,
"VALUE" NVARCHAR2(20)
)
これに対して、以下のようなプロパティを持ったエンティティクラスがあります。
MainTblエンティティ
@Column( length = 10, nullable = false )
public Integer rid;
@OneToOne(mappedBy = "mainEnt1")
public SubTbl subEnt1;
@OneToOne(mappedBy = "mainEnt2")
public SubTbl subEnt12;
SubTblエンティティ
@Column( length = 10, nullable = false )
public Integer mainId;
@Column( length = 10, nullable = false )
public Integer ord;
@Column( length = 20, nullable = true )
public String value;
@OneToOne
@JoinColumn(name="MAIN_ID", referencedColumnName="RID")
public MainTbl mainEnt1;
@OneToOne
@JoinColumn(name="MAIN_ID", referencedColumnName="RID")
public MainTbl mainEnt2;
そしてServiceクラスで、
List<MainTbl> result =
jdbcManager.from(MainTbl.class)
.leftOuterJoin("subEnt1" , "subEnt1.ord = 0")
.leftOuterJoin("subEnt2" , "subEnt2.ord = 1")
.getResultList();
を実行すると、MainTblクラスの subEnt1、subEnt2 プロパティに、
全く同じ値(オブジェクト)が入ってしまいます。
何か解決策はありますでしょうか?
ご存知の方がいらしたら、教えていただければ、と思います。
宜しくお願い致します。
(図にすると、以下のようになります)
MAIN_TBL
------
RID
------
1
2
3
------
SUB_TBL
------------------------
MAIN_ID, ORD, VALUE
------------------------
1 0 A
1 1 B
2 0 C
2 1 D
3 0 E
------------------------
上記のMAIN_TBLとSUB_TBLから、下の表を作りたい。
---------------------------
RID, VALUE1, VALUE2
---------------------------
1 A B
2 C D
3 E
---------------------------
しかし、下のようになってしまう。
---------------------------
RID, VALUE1, VALUE2
---------------------------
1 A A
2 C C
3 E
---------------------------
Seasar-user メーリングリストの案内