

Spring BootアプリでDomaを使ったアプリ開発において、SQLテンプレートにて条件コメントによるgroup
by句の生成制御を試みているのですが、分からない部分があるので質問させてください。

DomaのSQLテンプレートにおいて、Daoメソッドパラメータにより条件式を動的に組み立てる際に、where句では条件式がすべて生成されない場合はwhere句自身も生成されませんが、group
by句ではgroup by句が取り残されてしまうようです。

テンプレート記述

[code]

    group by
      /*%if condtion */
        col1, col2
      /*%end*/
    
[/code]

conditionがfalse時に生成されたSQL

[code]

    group by
    
[/code]

ドキュメントの記述を見る限り、条件コメントはgroup by句に記述可能と思われます。

> <http://doma.readthedocs.io/ja/stable/sql/#id16>
>
> ### 条件コメントにおける制約
>
> 条件コメントの if と end はSQLの同じ節に含まれなければいけません。 節とは、 SELECT節、FROM節、WHERE節、GROUP
> BY節、HAVING節、ORDER BY節などです。

とりあえず今は、以下のようにダミーのgroup
by項目(id相当)と切り替えることで回避していますが、こちらもwhere句と異なりカンマの編集が行われないようです。

[code]

    group by
      /*%if condtion */
        col1, col2
      /*%else*/
        dummy  -- 文法上「,dummy」としたいが「group by ,dummy」と生成されアプリ実行時にエラーとなる
      /*%end*/
    
[/code]

上記問題を解決できる方法がありましたら教えて下さい。

環境  
Spring Boot: 1.5.2  
doma-spring-boot-starter: 1.1.1  
Doma: 2.16.1


CC BY-SA 3.0
2018-01-17T08:03:47.283
41034
2018-12-17T02:02:50.583
2018-01-19T03:24:25.180
27028
27028
question
spring-boot
GROUP BY句におけるDomaの条件コメント記述方法について


「全体をそのまま解釈した場合に正しいSQLにならない」という問題については、問題になる部分を埋め込みコメントにして隠すことで回避できます。

[code]

    group by
      /*%if condtion */
        col1, col2
      /*%else*/
      /*# "dummy" */
      /*%end*/
    
[/code]


CC BY-SA 3.0
2018-01-21T11:37:18.060
41121
2018-01-21T11:37:18.060
27076
41034
answer