クエリビーン
クエリビーンはオプションですが、型安全のコンパイル時チェック
を使用してクエリを記述するための優れた方法を提供します。プロパティとエクスプレッションでIDE 自動補完
を使用すると、使いやすく学習することもできます。
クエリビーンは、Java アノテーション処理 (APT) または Kotlin アノテーション処理 (KAPT) を使用して生成されます。
エンティティごとに、同じ名前のクエリビーンが生成されますが、プレフィックスとしてQ
が追加されます。したがって、Customer というエンティティビーンがある場合、QCustomer というクエリビーンが生成されます。
エンティティビーンモデルが変化すると、クエリビーンが再生成され、開発者はアプリケーションクエリに対してコンパイル時チェックを取得できます。クエリがモデルに対して有効でなくなった場合はコンパイル時エラーが発生します。
例
Contact contact =
new QContact() // Contact query bean
.email.equalTo("rob@foo.com") // type safe expression
.findOne(); // with IDE auto-completion
List<Customer> customers =
new QCustomer() // Customer query bean
.status.equalTo(Status.NEW)
.billingAddress.city.equalTo("Auckland") // joins automatically added
.contacts.isEmpty() // to support expressions
.findList();
APT / KAPT (クエリビーンの生成)
Java
クエリビーンを生成するには、io.ebean:querybean-generator Java アノテーションプロセッサを使用し、Kotlin
クエリビーンを生成するには、io.ebean:kotlin-querybean-generator を使用します。
Maven による生成
maven を使用してクエリビーンを生成する方法の詳細については、docs / getting-started / maven を参照してください。
Gradle による生成
gradle を使用してクエリビーンを生成する方法の詳細については、docs / getting-started / gradle を参照してください。
拡張機能
バージョン 12.1.8 より前は、src/main/resources/ebean.mf
マニフェストファイルを編集して、クエリビーンで拡張する必要があるパッケージのquerybean-packages
を指定する必要があることに注意してください。12.1.8 以降はこれが不要になりました。
例 (12.1.8 より前)
entity-packages: org.example.domain
transactional-packages: org.example
querybean-packages: org.example
但し書き - リファクタリングのリネーム
エンティティビーンのリファクタリングのリネーム
IDE でエンティティ Bean の名前を変更してリファクタリングする場合は、クエリ Bean で すべてビルド
をトリガーする必要があります。これは古い Bean 名に対するクエリ Bean が次の すべてビルド
まで保持されるためです。
すべてビルド
を実行すると、古いクエリ Bean は効果的に削除され新しい Bean が生成されます。この時点で、調整が必要なクエリ(新しいクエリ Bean 名を使用)に対してコンパイラ エラーが発生します。
Groovy Spock
Groovy で(おそらく Spock テストで)クエリ Bean を使用する場合、@CompileStatic
ブロックの中でそれらを使用する必要があります。
@CompileStatic
static def findCount(String name) {
return new QDbSample().name.eq(name).findCount()
}
そうすれば、次のように Spock テストでヘルパー メソッドを使用できます
...
then:
// this line NPEs
findCount('fred') == 1