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