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

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


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 メーリングリストの案内