SpringBoot+Domaの検証を行っていて、WARファイルでも作ってみるかとGradleからビルドしたら、何回やってもコンパイルエラーになって困った。
いきなりミュータブルとか言われてもよく分からない。
エラー: [DOMA4124]ミュータブルなエンティティクラスは非privateな引数なしのコンストラクタを持たねばなりません。イミュータブルにするには@Entityのimmutable要素にtrueを設定してください。 public class Emp { ^ エラー1個 :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more l og output. BUILD FAILED
Eclipse上ではエラーが出てないのになんで?と思ってググってみたら、次のツイートが目についた。
lombokとdomaは相性が良くなさそうな予感がするなー。domaていうかapt。どうなんだろー。
— しーば@10/25楽天テックカンファ大阪 (@bufferings) March 12, 2014
コンストラクタの自動生成で競合してるようです。
DomaのエンティティクラスにあるLombokの@Dataアノテーションを削除したらビルドできました。
基本的にDomaのエンティティはpublicフィールド対応してるのでLombokは不要です。
SpringBootを検証しているうちにいつのまにかエンティティに@Dataを付与してしまってたみたいです…。