[Seasar-user:17269] [Kuina-Dao] JpqlUtil#toDefaultIdentificationVariable の仕様
Tomoyuki KANO
[E-MAIL ADDRESS DELETED]
2009年 4月 18日 (土) 11:08:08 JST
加納と申します
Kuina-Dao においてエンティティのクラス名が Member の場合、
たとえば List<Member> findAll() を呼び出すと
JPQL:
select member from Member AS member
となりますが
eclipselink で確認したところ parse errorとなってしまします。
member が予約語として扱われているためだと思いますが、
他の JPA 実装は試していません。
# member なんて如何にもエンティティ名としてありそうなものを
# 予約語扱いされるのも厭らしい。
# それとも Rails に宗旨変えして members にしろとか?
eclipselink の場合
select _member from Member AS _member
であれば問題が起きないことは確認しました。
回避策として @Entity(name="_member") とかすればいいのですが、
select _member from _member AS _member
となってしまうので、ログだけの問題ですが気持ちよくありません。
いちいち問題となるエンティティ名に回避のための @Entity(name="xxx")を
書くことも、エンティティをソース自動生成などで作っている場合に
面倒かなとも思います。
そこでですが、
JpqlUtil#toDefaultIdentificationVariable が返す文字列に、常に "_" を
プリフィックスに付加するとしても実害が無いように思うのですが
いかがでしょうか?
よろしくご検討ください。
Seasar-user メーリングリストの案内