[seasar-dotnet:2184] Re: [DBFlute]OutsideSqlにおける固定の区分値について

taknb2nch [E-MAIL ADDRESS DELETED]
2012年 8月 13日 (月) 18:50:32 JST


jfluteさん

taknb2nchです。

早速試してみました!

・暗黙の区分値のみの場合
・固定の区分値のみの場合
・暗黙の区分値と固定の区分値が混在の場合
・Number型の区分値の場合
・String型の区分値の場合
・Number型の区分値とString型が混在の場合

で生成されたソースコード、実行されるSQLも正しいことを確認しました。
(見落としがあったらすいません)

> ちなみに、List型は未対応になります。
今のところ必要ないのですが、そのうちに欲しくなるかもしれませんね。


ありがとうございました!!!



2012年8月13日 18:15 kubo <dbflute @ gmail.com>:
> jfluteです。
>
>> 今度はsql2entityタスク実行時に失敗するようになってしまいました。
> わぁ、ごめんなさい。
> 盆ミスしてしまいましたね(メソッド呼び出しで失敗!)。
>
> http://dbflute.net.sandbox.seasar.org/download/dbflute/dbflute-0.8.9.46.zip
>
> でお試しください。
> これでうまくいけばそのままそのモジュールをリリースしようかと。
>
> 2012/8/13 taknb2nch <taknb2nch @ gmail.com>:
>> jflute さん
>>
>> taknb2nchです。
>> お盆中にもかかわらずありがとうございます。
>>
>>
>> 早速試してみました・・・が、
>>
>> 今度はsql2entityタスク実行時に失敗するようになってしまいました。
>>
>> 今回対応していただいている「固定の区分値」のみの場合は大丈夫なのですが、
>> 「暗黙の区分値」が利用されている場合タスクが失敗するようです。(両方混在の場合もNG)
>> (テーブル区分値は利用していないので分かりません)
>>
>>
>> ちなみにNumber型区分値の場合のint.ParseはOKです。
>>
>>
>> 以下、sql2entityタスク実行時のログになります。
>>
>> 2012-08-13 17:22:35,056 [main] INFO  (Database#info():2311) - public
>> void parseParameterBean() {
>> 2012-08-13 17:22:35,056 [main] INFO  (Database#info():2311) -
>> parse('GetHogeListPmb');
>> 2012-08-13 17:22:35,076 [main] ERROR
>> (DfDBFluteTaskUtil#logException():161) - Look! Read the message below.
>> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>> Failed to execute DBFlute Task 'Sql2Entity'.
>>
>> [Advice]
>> Check the exception messages and the stack traces.
>>
>> [Database Product]
>> Microsoft SQL Server 9.00.3068
>>
>> [JDBC Driver]
>> Microsoft SQL Server JDBC Driver 2.0 2.0.1803.100 for JDBC 4.0
>> * * * * * * * * * */
>> java.lang.IllegalStateException: Exception thrown by
>> generator.parse(): control=om/ControlSql2EntityCSharp.vm
>>         at org.seasar.dbflute.task.bs.DfAbstractTexenTask.fireVelocityProcess(DfAbstractTexenTask.java:401)
>>         at org.seasar.dbflute.task.DfSql2EntityTask.doExecute(DfSql2EntityTask.java:148)
>>         at org.seasar.dbflute.task.bs.DfAbstractTexenTask.execute(DfAbstractTexenTask.java:124)
>>         at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
>>         at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
>>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
>>         at org.apache.tools.ant.Task.perform(Task.java:348)
>>         at org.apache.tools.ant.Target.execute(Target.java:357)
>>         at org.apache.tools.ant.Target.performTasks(Target.java:385)
>>         at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
>>         at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
>>         at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>>         at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
>>         at org.apache.tools.ant.Main.runBuild(Main.java:698)
>>         at org.apache.tools.ant.Main.startAnt(Main.java:199)
>>         at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>>         at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
>> Caused by: org.seasar.dbflute.exception.DfTemplateParsingException:
>> Look! Read the message below.
>> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>> Failed to parse the input template.
>>
>> [Input Template]
>> om/csharp/bsbhv/pmbean/BsParameterBean.vmnet (UTF-8)
>> * * * * * * * * * */
>>         at org.seasar.dbflute.friends.velocity.DfFlutistGenerator.throwTemplateParsingException(DfFlutistGenerator.java:264)
>>         at org.seasar.dbflute.friends.velocity.DfFlutistGenerator.parse(DfFlutistGenerator.java:246)
>>         at org.seasar.dbflute.friends.velocity.DfFlutistGenerator.parse(DfFlutistGenerator.java:164)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>         at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:260)
>>         at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:207)
>>         at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:250)
>>         at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
>>         at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:344)
>>         at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:153)
>>         at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:94)
>>         at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:109)
>>         at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:271)
>>         at org.apache.velocity.Template.merge(Template.java:296)
>>         at org.seasar.dbflute.friends.velocity.DfFlutistGenerator.parse(DfFlutistGenerator.java:297)
>>         at org.seasar.dbflute.task.bs.DfAbstractTexenTask.fireVelocityProcess(DfAbstractTexenTask.java:393)
>>         ... 18 more
>> Caused by: java.lang.StackOverflowError
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.assertArgumentPmbMetaDataClassName(DfPmbGenerationHandler.java:614)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:199)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:201)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:201)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:201)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:201)
>>         at org.seasar.dbflute.logic.sql2entity.pmbean.DfPmbGenerationHandler.getPropertyTypeRemovedCSharpNullable(DfPmbGenerationHandler.java:201)
>> ・・・以下同じ内容が1000行ほど続いてます。
>>
>>
>>
>> よろしくお願いいたします。
>>
>>
>> 2012年8月12日 0:51 kubo <dbflute @ gmail.com>:
>>> jfluteです。
>>>
>>>> Numberで定義した区分値に対して前回のRC1ではint.Parseが付いていたのですが、
>>>> 今回は付かなくなってしまいビルドエラーになります。
>>> 再度修正しましたー。
>>> ちなみに、List型は未対応になります。
>>>
>>> 2012/8/12 taknb2nch <taknb2nch @ gmail.com>:
>>>> jflute さん
>>>>
>>>> taknb2nchです。
>>>>
>>>>
>>>> 早速ありがとうございます!
>>>>
>>>> 今回は出力されたparametaer-beanが下記のようになります。
>>>>
>>>> // Attribute
>>>> protected int? _hogeFlagTrue = CDef.Flag.True.Code;
>>>> protected string _hogeTypeA = CDef.HogeType.A.Code;
>>>>
>>>> Stringで定義した区分値は問題無さそうですが、
>>>> Numberで定義した区分値に対して前回のRC1ではint.Parseが付いていたのですが、
>>>> 今回は付かなくなってしまいビルドエラーになります。
>>>>
>>>> その部分だけ手で直して実行してみましたが、
>>>> 実際のSQLでは期待する値もセットされていて問題ありません。(当たり前ですね)
>>>>
>>>>
>>>> よろしくお願いいたします。
>>>>
>>>>
>>>> 2012年8月11日 23:09 kubo <dbflute @ gmail.com>:
>>>>> jfluteです。
>>>>>
>>>>>> 早速試してみましたが、
>>>>>> BsParameterBean.vmnetの64行目〜の${classificationElement.name}が
>>>>>> 下記のようにそのまま出力されているようでエラーになります。
>>>>>
>>>>> 申し訳ありません、でかける寸前で安易に「これでできるんじゃ!?」と
>>>>> やって見事にできなかったです...RC1を上書きしているので、
>>>>> お試して頂けますでしょうか?
>>>>>
>>>>> 2012/8/11 taknb2nch <taknb2nch @ gmail.com>:
>>>>>> jflute さん
>>>>>>
>>>>>> taknb2nchです。
>>>>>> ありがとうございます!!
>>>>>>
>>>>>> 気になるところは他にもあったりするのですが、
>>>>>> とりあえずこれをお願いしてみました。
>>>>>>
>>>>>>
>>>>>> 早速試してみましたが、
>>>>>> BsParameterBean.vmnetの64行目〜の${classificationElement.name}が
>>>>>> 下記のようにそのまま出力されているようでエラーになります。
>>>>>>
>>>>>> protected int? _hogeFlagTrue =
>>>>>> int.Parse(CDef.Flag.${classificationElement.name}.Code);
>>>>>> protected string _hogeTypeA = CDef.HogeType.${classificationElement.name}.Code;
>>>>>>
>>>>>>
>>>>>> よろしくお願いいたします。
>>>>>>
>>>>>> 2012年8月11日 10:20 kubo <dbflute @ gmail.com>:
>>>>>>> 久保(jflute)です。
>>>>>>>
>>>>>>> taknb2nchさん、おはようございます。
>>>>>>> いつも .NET 版は保留保留とさせてもらってて
>>>>>>> 申し訳ないので、ちょっとやってみました。
>>>>>>>
>>>>>>> http://dbflute.net.sandbox.seasar.org/download/dbflute/dbflute-0.8.9.46-RC1.zip
>>>>>>>
>>>>>>> でも、ちょっと環境的にWindowsでの確認がすぐにできないので、
>>>>>>> テンプレートを書き換えただけで試していませんので、
>>>>>>> お手数ですがちょっと試して頂けないでしょう?
>>>>>>> (BsParameterBean.vmnetが変わっています)
>>>>>>>
>>>>>>>
>>>>>>> 2012/8/10 taknb2nch <taknb2nch @ gmail.com>:
>>>>>>>> taknb2nchです。
>>>>>>>>
>>>>>>>> お世話になります。
>>>>>>>>
>>>>>>>>
>>>>>>>> Java版では実装されている
>>>>>>>> 「OutsideSqlにおけるParameterBeanのオプションの固定の区分値」
>>>>>>>> は、.NET版では実装されていないのでしょうか。
>>>>>>>>
>>>>>>>> [区分値定義]
>>>>>>>> ; Flag = list:{
>>>>>>>>     ; map:{topComment=フラグを示す;}
>>>>>>>>     ; map:{code=1; name=True; alias=はい ; comment=有効を示す}
>>>>>>>>     ; map:{code=0; name=False; alias=いいえ ; comment=無効を示す}
>>>>>>>> }
>>>>>>>>
>>>>>>>> [SQLファイル定義部分]
>>>>>>>> -- !df:pmb!
>>>>>>>> -- !!string hogeFlagTrue:cls(Flag)!!
>>>>>>>>
>>>>>>>> にすると生成されるParameterBeanで正しく区分値のプロパティとして生成されるのですが、
>>>>>>>>
>>>>>>>> [SQLファイル定義部分]
>>>>>>>> -- !df:pmb!
>>>>>>>> -- !!string hogeFlagTrue:cls(Flag.True)!!
>>>>>>>>
>>>>>>>> とすると生成されるParameterBeanでは単純にstring型のプロパティとして生成されてしまいます。
>>>>>>>> またSQL実行時にも反映はされません。(単純なプロパティなので当然でしょうか)
>>>>>>>>
>>>>>>>> <実行環境>
>>>>>>>> DBFlute.NET 0.8.9.44
>>>>>>>> Seasar.NET 1.3.17.0
>>>>>>>> .NET Framework 2.0
>>>>>>>> SQLServer 2005
>>>>>>>> Windows XP Pro sp2 32bit
>>>>>>>>
>>>>>>>>
>>>>>>>> Java版ではこの機能を便利に利用させていただいているので、
>>>>>>>> 出来れば.NET版でも利用できればと思います。
>>>>>>>>
>>>>>>>> あくまで要望ですので緊急性は全くありません。
>>>>>>>> 実装不可能でもいたって問題はありません。
>>>>>>>>
>>>>>>>>
>>>>>>>> よろしくお願いいたします。
>>>>>>>> _______________________________________________
>>>>>>>> seasar-dotnet mailing list
>>>>>>>> seasar-dotnet @ ml.seasar.org
>>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>> _______________________________________________
>>>>>>> seasar-dotnet mailing list
>>>>>>> seasar-dotnet @ ml.seasar.org
>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>> _______________________________________________
>>>>>> seasar-dotnet mailing list
>>>>>> seasar-dotnet @ ml.seasar.org
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>> _______________________________________________
>>>>> seasar-dotnet mailing list
>>>>> seasar-dotnet @ ml.seasar.org
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>> _______________________________________________
>>>> seasar-dotnet mailing list
>>>> seasar-dotnet @ ml.seasar.org
>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>> _______________________________________________
>>> seasar-dotnet mailing list
>>> seasar-dotnet @ ml.seasar.org
>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> _______________________________________________
>> seasar-dotnet mailing list
>> seasar-dotnet @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet


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