[Seasar-user:15007] [DBFlute]自動生成されるentityにColumnアノテーションを付加したいのですが
早川貴彦
[E-MAIL ADDRESS DELETED]
2008年 7月 12日 (土) 00:17:59 JST
早川と申します。
現在S2JDBCを使用したプロジェクトにおいて、
テーブルのentityをDBFlute-S2JDBCを使用して作成しているのですが、
下記のような課題があり、解決策を模索しております。
何らかのよいアイディアは無いでしょうか?
[テーブルの状況]
約500テーブルあり
その中の1テーブル名と、300近い列名に、
STATUS1_1
STATUS1_2
・・・
のような、camel形式の規約にはそぐわない名前の物が存在する。
そのため、
DB項目名 → JAVAフィールド名 → DB項目名
例1: STATUS1_1 → status11 → STATUS11
例2: CMD_9KETA → cmd9keta → CMD9KETA となってしまい、SQL実行時に例外が発生する
(テーブル名については自動生成後のentityクラスの @Entity
に、 name=テーブル名 を付加する事で対応する予定。)
[解決案として調査中の物]
1.自動生成時に何らかの設定により、@Columnアノテーションを付加する
→dbflute-s2jdbc-example のdbflute_exampledb/dfrop内に設定可能な.dfprop
ファイル・設定項目によっては実現できない。
(mydbflute/dbflute_0.7.3/etc/client_directory-template/fullPropertiesも確認)
(Web等も確認したが、確認漏れ?)
2.bsではなく、entityパッケージ内のentityクラスに対して、
同名のフィールドを定義しoverrideさせ、@Columnアノテーションを付加する
→自動生成によりテーブルとの整合性を取りやすくすることが目的なのに、
その趣旨から外れてしまう。
(+そもそも問題が発生しないか確認をとれていない)
3.テーブルの列名を変更する
→個人的には一番望ましいのだが、他チームとの兼ね合いがあり、
現在交渉中
4.jdbcバッチ実行後の中間xmlファイルにおいて何らかの手を加える
→dtdを確認する限り、そのような設定を持っていない
5.名前の変換規則を変える
http://s2container.seasar.org/2.4/ja/s2jdbc_entity.html#カラム定義
にある、
>convention.diconで指定されている org.seasar.framework.convention.impl
> .PersistenceNamingConventionImpl のfromPropertyNameToColumnName()の実装を変える
→ 一律ルールでは、今回の列名の状態に対応させることが難しい
(単語の末尾に数字が来ることもあれば、先頭に来ることもあり、一律で対処出来そうに無い)
調査中:(パターンを完全に洗い出せば、対応可能?ただ、その場合も今後の新パターンが
出ないように調整が必須)
6.自動生成を最初の1度だけにし、今後については諦める
→まだまだ列の追加・変更は発生しそうなため、望ましくない
見落としているWebの資料や、考え方、
あるいは他の良い方法はないでしょうか?
以上です。よろしくお願いいたします。
--
早川貴彦
Seasar-user メーリングリストの案内