私は3つのドメインクラス:User
,Product
およびTransaction
というダミーのカフェテリアプロジェクトを持っています。ここでGORM作成条件 - SQLのhaving節を使用
は、クラスが定義されている方法は次のとおりです。
class User {
String name
int employeeId
long balance = 800
static constraints = {
balance(max: 800L)
}
}
class Product {
String type
int quantityInStock
float price
static constraints = {
}
}
class Transaction {
int quantityBought
static belongsTo = [user: User, product: Product]
static constraints = {
}
}
今私はの/ 2製品を言って、より多くを購入したユーザーのリスト数を知りたいです。 Grails createCriteriaを使ってどうすればいいですか?
これは私が試したものです:
Transaction.createCriteria().list(){
projections {
groupProperty('user')
'product' {
count('id','numberOfPurchases')
}
}
gt('numberOfPurchases',2)
}
しかし、それは次のエラーを与える:gt
でそれを使用するように
Stacktrace:
org.hibernate.QueryException: could not resolve property: numberOfPurchases of: cafeteria.dummy.Transaction
at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1618)
at Script1.run(Script1.groovy:4)
at org.grails.plugins.console.ConsoleService.eval(ConsoleService.groovy:37)
at org.grails.plugins.console.ConsoleController.execute(ConsoleController.groovy:59)
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
はどのようにして予測ブロックの外側、このエイリアスnumberOfPurchases
にアクセスすることができますか?
あなたがHQLにサブクエリを使用することができます。いくつかの詳細はhttp://docs.grails.org/latest/guide/GORM.htmlのセクション7.4にあります。 – Mamun
@Mamun、私はそれがHQLを使用して実行できることを認識しています。私はそれが基準を使って行うことができるかどうかを知りたがっていました。 –
DetachedCriteriaを使用することはできますが、それはおそらく期待通りのものではないかもしれません。 – Mamun