[seasar-dotnet:2363] Re: DBFlute.NETに要望

kubo [E-MAIL ADDRESS DELETED]
2014年 8月 29日 (金) 11:32:44 JST


jfluteです

竹内さん、こんにちは
DBFlute.NETのご利用ありがとうございます!
しかも、Firebirdとは(^^。
やはり、しっかりサポートしないとですね。

> 1) 主キー以外を参照する additionalForeignKey
ちょっと試してもらえませんでしょか?
mydbflute の BaseBhv.vmnet の 223 行目を
${table.getPrimaryKeyJavaNativeAsOne()}
 ↓
${referrer.localColumnAsOne.javaNative}
と変更してみたら、どうでしょう?

> 2) 外だしSQLの引数にNullable型の使用
お、こちらですが、EntityではなくParameterBeanの方でしょうか?
birthDateのプロパティ型が DateTimeQ になってしまっているとか。
(CODEカラムは、##指定により string!?)

> 3) replace-schema.bat で既存のオブジェクトが削除されない
> 4) isIncrementSequenceToDataMax = true の対応
こちらは、Alto DBFluteパートなので、
jfluteがちゃんとExample作った対応しないとですね。
ちょっとすぐの対応がなかなか難しいですが、
Firebirdも少なくともAltoは動くようにしたいなと。


2014-08-29 10:26 GMT+09:00 竹内学 <mtakeuchi @ ailesys.co.jp>:
> 竹内です。お世話になります。
>
> DBFlute.NET 0.8.9.58 + Firebird 2.5 (非公式ですが) で開発しておりました (ほぼ完了)。
>
> DBFlute.NET いいですよー。バシバシ使い倒したいと思っております。
>
> で、開発途中、ちょっと修正して貰えたらなぁと言うのがいくつかありましたので、
> 要望としてメールします。
>
> 1) 主キー以外を参照する additionalForeignKey で自動生成コードのデータ型
>    次の様なテーブルがあったとします。
>
> create table DEPARTMENT (
> ID bigint not null
> , CODE varchar(20) not null
> , NAME varchar(80) not null
> , constraint DEPARTMENT_PK primary key (ID)
> , constraint DEPARTMENT_UQ1 unique (CODE)
> );
>
> create table EMPLOYEE (
> ID bigint not null
> , CODE varchar(20) not null
> , NAME varchar(20) not null
> , BIRTH_DATE DATE
> , DEPARTMENT_CODE varchar(20) not null -- DEPARTMENT.CODE を参照
> , constraint EMPLOYEE_PK primary key (ID)
> , constraint EMPLOYEE_UQ1 unique (CODE)
> );
>
> additionalForeignKeyMap.dfprop に次の様に宣言をしました。
> map:{
> ; EMPLOYEE_FK1 = map:{
> ; localTableName = EMPLOYEE ; foreignTableName = DEPARTMENT
> ; localColumnName = DEPARTMENT_CODE ; foreignColumnName = CODE
>  }
> }
>
> この状態で generate.bat を実行しますと、BsDeparmentBhv.cs に
>
> public virtual void LoadInventoryTempList(IList<Department> departmentList,
> LoadReferrerOption<InventoryTempCB, InventoryTemp> loadReferrerOption) {
> AssertObjectNotNull("departmentList", departmentList);
> AssertObjectNotNull("loadReferrerOption", loadReferrerOption);
> if (departmentList.Count == 0) { return; }
> InventoryTempBhv referrerBhv = xgetBSFLR().Select<InventoryTempBhv>();
> HelpLoadReferrerInternally<Department, long?, InventoryTempCB,
> InventoryTemp>
> (departmentList, loadReferrerOption, new
> MyInternalLoadInventoryTempListCallback(referrerBhv));
> }
>
> protected class MyInternalLoadInventoryTempListCallback :
> InternalLoadReferrerCallback<Department, String, InventoryTempCB,
> InventoryTemp> {
> ... 略 ...
>
>   の様に出力されます (他にも似たコードが...)。
>
>   ここの問題は、MyInternalLoadInventoryTempListCallback で宣言されている型引数の第2パラメータは String
> となっています。
>   しかし、LoadInventoryTempList の中では long? として宣言しています。
>   まぁ、手で直せるレベルだったので、手で直しましたが、
>   generate.bat を実行する度に修正をしなければならなかったので、出来れば自動生成の際にちゃんと出力して頂けたらなぁと。
>
>
>
> 2) 外だしSQLの引数にNullable型の使用
>    外だしSQLを次の様に宣言をしたとします。
>
> /*
> [df:title]
> 社員コードの検索
> */
> -- #df:entity#
> -- ##string CODE##
> -- !df:pmb!
> -- !!DateTime? birthDate!!
> select CODE
> from EMPLOYEE
> /*BEGIN*/
> where
> /*IF pmb.BirthDate != null*/
> BIRTH_DATE >= /*pmb.BirthDate*/'2001/01/01'
> /*END*/
> /*END*/
> order by CODE asc
>
>   これで sql2entity.bat で生成された entity クラスのデータ型は DateTime? ではなくて DateTimeQ
> となっています。
>   これも、手で直せるレベルだったので、手で直しましたが、
>   sql2entity.bat を実行する度に修正をしなければならなかったので、出来れば自動生成の際にちゃんとしたデータ型で出力して頂けたらなぁと。
>
>   あと、結果をスカラ型受けるのって対応していない? 色々チャレンジしてみましたが、途中で諦めました。
>
>
> --- 以下は Firebird が非対応である事は承知の上で... ---
> 3) replace-schema.bat で既存のオブジェクトが削除されない
> 4) isIncrementSequenceToDataMax = true の対応
>
>
> 以上です。
>
> ご検討頂けましたら、幸いに存じます。
>
> よろしくお願いします。
>
>
>
> --
> 竹内 学 <mailto:mtakeuchi @ ailesys.co.jp>
> 株式会社エールシステム
>
>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内