Doma2+SpringBoot+Gradle+Kotlinをやっていくときのアレコレ
似たようなタイトルの記事がありますが、お察しの通り続きです。
きっかけ
Doma2をKotlinで使うときにベストプラクティスとしては、エンティティをData Classで書くのが良いらしい。
というわけで、前回のJavaのエンティティをKotlinに差し替えたい。
コード量も減るし、何よりJavaのエンティティからKotlinのエンティティに変換するみたなことがなくて良い。
(ドメインロジックをKotlinのエンティティに持たせたいときとか、そうなるよね)
しかしながら、ビルドするとこんなエラーが出る。
C:\Users\taked\workspace\doma2samplekotlin\build\classes\java\main\jp\takeda\doma2sample\dao\PersonDomaDaoImpl.java:28: エラー: シンボルを見つけられません __query.setEntityType(jp.takeda.doma2sample.model._PersonEntity.getSingletonInternal()); ^ シンボル: クラス _PersonEntity 場所: パッケージ jp.takeda.doma2sample.model C:\Users\taked\workspace\doma2samplekotlin\build\classes\java\main\jp\takeda\doma2sample\dao\PersonDomaDaoImpl.java:39: エラー: シンボルを見つけられません org.seasar.doma.jdbc.command.SelectCommand<java.util.List<jp.takeda.doma2sample.model.PersonEntity>> __command = getCommandImplementors().createSelectCommand(__method0, __query, new org.seasar.doma.internal.jdbc.command.EntityResultListHandler<jp.takeda.doma2sample.model.PersonEntity>(jp.takeda.doma2sample.model._PersonEntity.getSingletonInternal())); ^ シンボル: クラス _PersonEntity 場所: パッケージ jp.takeda.doma2sample.model エラー2個
解決方法
プロジェクト丸ごとはここを参照。
これも、公式を見れば一発なんだけどkaptを使って、注釈処理をしてあげるとビルドが通ります。
ですが、上記ページでは当たり前すぎて書いてないと思うのですが、dependenciesにこれを追加するのをお忘れなく。
kapt("org.seasar.doma:doma:${domaVersion}")
https://github.com/takedasan/doma2samplekotlin/blob/master/build.gradle
gradle build
すると無事、ビルドが通ります。
アプリケーションの起動は bootRun
で行います。
IntelliJのビルドだと相変わらずコケます。
毎回Gradleでやるのめんどいから何とかならんのかなぁ…