[Seasar-user:9501] Re: [dbflute]同じテーブルへ複数の外部キーをもつときのビルドエラー

kubo [E-MAIL ADDRESS DELETED]
2007年 7月 27日 (金) 12:44:40 JST


久保です。

> 1つのテーブルが同じテーブルへ複数の外部キーを
> もつときに、dbfluteが生成するbsentityのソースコードに
> 重複部分が現れ、ビルドが通りません。
> バージョンは0.5.3です。

DBFluteは、通常

1つのテーブルが同じテーブルへ複数の外部キーをもつ場合
互いのColumn名を識別子に入れて生成しますので、
重複してCompileErrorになることはありません。

BOOK
  BOOK_ID (PK)
  AAA_AUTHOR_ID (FK to AUTHOR)
  BBB_AUTHOR_ID (FK to AUTHOR)

AUTHOR
  AUTHOR_ID (PK)

↓↓↓

FKの識別子:
  AuthorByAaa
  AuthorByBbb

ですが、

> 
> ALTER TABLE VisitReservation ADD CONSTRAINT 
> AppliUser_VisitReservation_ModUserId
> 
>     FOREIGN KEY (AppliUserId)
> 
>     REFERENCES AppliUser(AppliUserId)
> 
> go
> 
> 
> 
> ALTER TABLE VisitReservation ADD CONSTRAINT 
> AppliUser_VisitReservation_RegUserId
> 
>     FOREIGN KEY (AppliUserId)
> 
>     REFERENCES AppliUser(AppliUserId)
> 
> go

こちらを見ると

FK制約名が ModUserId と RegUserId と別になっていますが、
実際にFKに利用している列が互いに同じ列を利用しています。
つまり、同じ内容のFKの制約が2つ存在することになります。

なのでこれは

FOREIGN KEY (ModUserId) REFERENCES AppliUser(AppliUserId)
FOREIGN KEY (RegUserId) REFERENCES AppliUser(AppliUserId)

の間違いではないのでしょうか?





Seasar-user メーリングリストの案内