awaawaさん、こんにちは
> 1.additionalForeignKeyMapで使える埋め込み区分値を外だしSQLでも使えるようにしてほしいです。
> http://dbflute.sandbox.seasar.org/ja/manual/reference/dfprop/additionalforeignkey/index.html
> ※現状サポートしている区分値条件のオプションとは別で、あくまで区分値のある値を固定で記述したいです。
ParameterBeanの区分値オプションの拡張で対応しました。
// ParameterBean - 区分値条件のオプション
http://dbflute.sandbox.seasar.org/ja/manual/function/generator/task/sql2entity/parameterbean.html#classification
> 2.外だしSQLの結果をList<Map<String, String>>のような形で受け取れるようにしてほしいです。
> 3.外だしSQLをファイル指定だけでなく、SQL自体(SQL文字列)を指定できるようにしてほしいです。
残念ですが、これはDBFluteとしてはサポートしないので、
アプリ側の共通モジュールでかぶせて処理するようにしてください。
2 はDBMeta、3は埋め込み変数コメントってところですね。
> # なお、1.ですが、逆のパターンで、
> # additionalForeignKeyMapのバインド変数コメントで
> # CDefのパッケージ解決をすることができるでしょうか。
> # 自分で確認すればいいことですが。。。
少なくとも固定のバインド変数値にすることはできないですが、
$$CDef$$自体を利用することはできたようなできなかったような...
2011/9/11 awaawa <p1us3i...@gmail.com>:
> --
> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
> このグループから退会するには、dbflute+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/dbflute?hl=ja からこのグループにアクセスしてください。
>
>
> ドキュメント確認中に、今回の件とは別件ですが、ドキュメントで間違えを見つけました。
ありがとう。別件じゃないね...w みごとに今回の件の部分だ...
直しました。
>> $$CDef$$自体を利用することはできたようなできなかったような...
> なるほど、exampleをいじって確認してみます。
> fixedConditionでDateクラスを指定するように、CDefクラスを指定できるとありがたいので。
やったらできた。(できるようにしてたはずだし)
dbflute-mysql-example で試しました。
> それを踏まえて、再度確認したら、
> 「固定の区分値」の上にある「リスト型の区分値」も同様のようです。(おそらく参考元かと。)
ありがとう!ドキュメントの間違いは
なかなか見つけられないので助かります。
> できれば、ドキュメント上fixedConditionのCDefの例もあるとうれしいです。
> (使う機会が多いと思うので。)
入れました。
http://dbflute.sandbox.seasar.org/ja/manual/reference/dfprop/additionalforeignkey/index.html#fixedcondition
あらためて読むと
「パッケージ名の解決は、ParameterBeanにおけるプログラム型のパッケージ解決と同じです。」
ってことだったね。
> あとまえから疑問だったのですが、
> additionalForeignKeyMapのページの最後にあるExampleの
> 「e.g. 会員から会員住所情報への有効期間条件付きのFK」
> ですが、localTableNameとforeignTableNameって逆じゃないでしょうか。
> 自分のfixedConditionの捉え方が間違っているかもしれませんが。。。
ん!?これは合ってるよ。
localTableNameが会員、foreignTableNameで会員住所情報でいいよね?
有効期間条件を入れることで、会員から会員住所情報を
one-to-oneとして参照できるってことなので。
(無論、実際のFK制約は会員住所情報から会員だけど)
2011/9/11 awaawa <p1us3i...@gmail.com>:
> 実際のFK制約と「FK制約を設定するテーブル」、「FKの参照先テーブル」は
> 変わらないと思っていました。
> 若干語弊がある解釈になるかもしれませんが、
> 業務的one-to-oneの場合、実際のFK制約とテーブルの関係は逆になるという考えでいいでしょうか。
結局は考え方次第で、どっちがローカルにもなるんだけど、
業務的one-to-oneのリレーションと実際のFK制約のリレーションは
独立して捉えていて(少なくとも物理的な関連はない)、
many側に条件を入れることによってone側とoneの関係になる
論理的なテーブルが一時的に作成されて(ビューみたいな考え方)、
そのテーブルに対してone側が擬似的なFKとして参照する、
というような概念になっています。
普通のone-to-oneの逆方向のSetupSelectは、
固定条件が不要で自動解決できるので、
DBFluteがその擬似的なFKを自動付与してると言えます。
まあ、そんな小難しいことは考えずに、
「実際のFK制約とテーブルの関係は逆になる」でOK。
「とにかくSetupSelectする方向(local to foreign)」でもOK。
2011/9/11 awaawa <p1us3i...@gmail.com>:
> 外だしSQLのDBMeta.ColumnInfoにコメントを付ける方法はあるでしょうか。
対応するカラムのDBコメントの説明ということかな?
それとも、その場で独自にコメントを付与ということかな?
前者は、CustomizeEntityのGetterに付与されます。
DBMetaは内部的なAPIという面とコンパイルスピードを考慮して、
JavaDocを付与していません。でも、そろそろ開発PCの性能も
ぐんとあがってきたから、あまり気にしなくもいいかなとも
考えています。(ちょっと検討中)
後者は、自動生成という特性上コメントを定義する箇所(タイミング)が
ないし、通常の CustomizeEntity であれば Getter をオーバーライドして、
JavaDocに好きなことを書いてしまえばOKですね。
> 外だしSQLの埋め込み変数コメントでSelect句のカラムが可変な場合、
> 自動生成時はすべてのカラムがある状態で、自動生成する必要があると考えていいでしょうか。
>
> ・イメージ
> /*IF pmb.dynamicClause == null*/
> select カラム1, カラム2... from ...
> /*END*/
> /*IF pmb.dynamicClause != null*/
> /*$pmb.dynamicClause*/
> /*END*/
なるほど、よく思い付いたね、これ。
> ※このようなパターンは、dbfluteの自動生成以外の方法で
> (Entityの代わりの)バリューオブジェクトを作成したほうがいいでしょうか。
これはその機能のアプリケーションにおける背景や
開発者の組織構造などに依存するので、現場にいない
自分からはなんとも言えないでしょう。
2011/9/28 awaawa <p1us3i...@gmail.com>:
なるほど、独自のコメントか。
ちょっと考えたのは、
select FOO as FOO_ID -- // FOOです
, BAR as BAR_NAME -- // BARです
という形式で、「... as [識別カラム名] -- // [コメント]」という
形式でパースしてコメントにくっ付けるっていうはどうかなって。
別途「FOO_ID = FOOです」って定義するのは無しかなと。
どうせなら、普通に付けたいコメントがそのままコメントになれば。
でも、有用かどうか、もうちょっと思考を続けて検討しないとだな。
あと、ELSEコメント使っている場合に、
IFコメントからELSEコメントの間に行コメントが
利用できないって制限が今あるので、それをどうにしたいね...
2011/9/30 awaawa <p1us3i...@gmail.com>:
select FOO as FOO_ID -- // FOOです、asの次がカラム名
, foo.BAR_NAME -- // BARです、ドットの次がカラム名
, BAZ_NAME -- // BAZです、カンマの次がカラム名
という形式が書いておけば、これがそのカラムの
追加的なコメントになるようにしました。
DBリンクのプロシージャシノニムと同じくRC1です。
同時に、IFコメントとELSEコメントの間に普通の行コメント
を書けない制限を取っ払いました。
DBMetaのJavaDocコメントはとりあえず無しで。
やるなら他のメソッドも検討した方が良いし、
あくまでディベロッパーがあまり直接触るもの
ではないものなので。
2011/10/1 kubo <dbf...@gmail.com>:
確認、フィードバックありがとう。
「TEST > 0 AS TEST_FLG」は修正しました。
「BAZ_NAME, -- // BAZです」もなんとかしました。
(個人的にはカンマ後ろいやなんだけどw)
> ・追加コメントを使用する場合、「-- // 」の「 // 」は必須。またColumnInfo._commonColumnには改行+「 // 」
> が含まれる。
> →できれば、_commonColumnには改行+「 // 」が含まれないようにしてほしいです。
あと、これはどちらかというと、アプリでパースしやすい
ようにって意味合いも含めて敢えて入れてるんだけどね。
「//」から改行までで切り取れば独自コメントになると。
(あとは独自コメントであることを見た目わかりやすく)
要は、メタ情報のカラムコメントの話と絡むわけだけど、
メタ情報のカラムコメントを抑制するオプションを付けるのは
簡単だけど、それはちょっとDBFluteの機能としては意味のある
機能とは思えないので、それはなしかなぁと。
そこまでやるならカラムコメントに入れ込むのではなく、
補足情報という形の別の保持領域を作る方がいいね。
CSVの共通モジュールの方で取り出せば良いと
思うのだけど、どうかな?
Srl.substringFirstFront(Srl.substringFirstRear(comment, "//"), "\n").trim();
2011/10/3 awaawa <p1us3i...@gmail.com>:
> 「TEST > 0 AS TEST_FLG」は修正しました。
> 「BAZ_NAME, -- // BAZです」もなんとかしました。
言い忘れていました、RC2で反映されています。
(ランタイムはRC1のままで)
2011/10/3 kubo <dbf...@gmail.com>:
>> (個人的にはカンマ後ろいやなんだけどw)
> カンマはやはり前にする方がいいんですかね。。。
> 前にした方が、内容の増減があったときに楽なのは分かっているのですが、
> 自分は、後にしてしまってますね。これを機に改めようか。。。
い、いや、別にそこは無理には...
ツールとかのフォーマッタは後ろに来るのもあるし。
>> Srl.substringFirstFront(Srl.substringFirstRear(comment, "//"), "\n").trim();
> でやります。
> ちなみに、SrlはDBFlute的にアプリ側で使っても問題ないクラスですか。
使ってもいいけど、アプリの Util 経由で呼ぶ方がいいね。
内部クラスであることには変わりないので。
というか、自己責任の上で...ってOSSだからいずれにせよ
同じことだけど、ソースコードを丸コピーでもいいかも。
ちなみに、Srl は本当に内部利用を想定したもので、
外部で使うなら DfStringUtil という自然な名前で利用できます。
継承してるだけなんだけど、文字列操作って使う場合は
気軽に使いたいから、DBFlute は3文字クラスにしてるのだ。
2011/10/4 awaawa <p1us3i...@gmail.com>: