Spring Boot

Spring DATA Repositoryの@Queryによる検索の戻り値を、DTOやインターフェースにする

Spring DATAのJPA Repositoryを使っているが、戻り値をJPA Entity全体ではなく、任意のフィールドだけにしたいという話があった。 単純にSQLのように SELECT フィールド, フィールド... すると Object の配列になるが、それは避けて任意のDTOやインターフェ…

JPAのCriteriaBuilderのconjunctionとdisjunctionについて

SpringのSpecificationなどで、動的なJPQLをCriteriaBuilderで、Predicateを組み立てるときに使う conjunction と disjunction 、毎回どっちがどっちか忘れるのでメモ。 conjunction disjunction 振り返り conjunction AND条件の起点。SQLに解釈されると 1 =…

Spring Data JPAのSpecificationでページング時にJOIN FETCHすると例外が発生する

@OneToMany でリレーションを設定したJPA Entityに対し、Spring Data JPAのSpecificationで動的クエリを発行している。 N+1問題の回避のため、 JOIN FETCH して findAll(Specification) で検索していたが、ページングすることとなり、 findAll(Specification…

Springの@Queryに列挙型のフィールドの値を埋め込む

特定の値しか入らないテーブルのカラムに対応する列挙型を用意し、フィールドとして値を保持している。 ORMとしてはJPA Entityを使用しているが、かなり古いソースなのでEnumeratedやConvertによる列挙型のフィールドマッピングなどは行われず、単純な int …

Spring Data JPAのRepositoryでクエリを自動生成するためのメソッド命名規約

Spring Data JPAで、 JpaRepository を継承したリポジトリインターフェースに対し、特定の命名規則でメソッドを宣言しておくと、 @Query アノテーションなど書かなくても処理を自動生成してくれる。 で、その命名規則、単純な検索処理であれば findAllByXxxI…

WindowsでGradleのbootRunがCreateProcess error=206になるときの対応方法と、Kotlinで記述している場合の注意点

開発端末がmacOSだけのプロジェクトに、ひとりWindowsでアサインされた。 プロジェクト管理がGradle、フレームワークがSpring Boot、開発言語がJavaまたはKotlinだったので、さっそく gradlew.bat bootRun すると、 A problem occurred starting process 'co…