[CONTAINER-381] [S2JDBC] 1 対多および多対 1 関連で自己結合した場合,1 対多関連に重複するエンティティが設定される問題を修正しました. Created: 2009-06-25 Updated: 2009-06-26 Resolved: 2009-06-26 |
|
| Status: | Resolved |
| Project: | S2Container |
| Component/s: | S2JDBC |
| Affects Version/s: | 2.4.38 |
| Fix Version/s: | 2.4.39 |
| Type: | Bug | Priority: | Major |
| Reporter: | shinsuke | Assignee: | koichik |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
テーブルparent、childがあり、child(as 子1)⇒parent(as 親)⇒child(as 子2) という結合を行った状況において、親がもつ子2リストに子1で取得したEntityが含まれる場合、子1が重複して取得されてしまいます。*To*EntityMapperImpで重複して追加することが原因に思えます。 作成したテーブルは以下です。 create table parent (
id number,
name varchar2(20),
primary key (id)
);
create table child (
id number,
parent_id number,
name varchar2(20),
primary key (id),
foreign key (parent_id) references parent (id)
);
insert into parent values (1, '親その1');
insert into child values (1, 1, '子その1');
insert into child values (2, 1, '子その2');
実行したメソッドは以下です。 List<Child> childList =
jdbcManager.from(Child.class).innerJoin("parent").innerJoin(
"parent.childList").id(1).getResultList();
childList.get(0).parent.childList で子その1が重複します。 |
| Comments |
| Comment by koichik [ 2009-06-26 ] |
|
対応しました. |
| Comment by shinsuke [ 2009-06-25 ] |
|
添付できないようなので、パッチを貼り付けます。 Index: src/main/java/org/seasar/extension/jdbc/mapper/ManyToOneEntityMapperImpl.java else if (!list.contains(target)) { + list.add(target); }
Index: src/main/java/org/seasar/extension/jdbc/mapper/OneToManyEntityMapperImpl.java
|