彼らの違いは何ですか?また、なぜそれらを使用する必要があるのでしょうか?私には全く違いがないようです。GrailsのwithCriteriaとCreateCriteriaの違いは何ですか?
答えて
それは私だけのGrails documで出会ったものを追加する価値がありますcreateCriteria()
のために。
そのクエリは、ページネーションパラメータ(maxおよびオフセット)を備え、これは、ページネーションのレコードを一致の合計数を返すgetTotalCount()メソッドを有するPagedResultListが返されるので。 2つのクエリは引き続き実行されますが、それらはあなたのために実行され、結果と合計カウントはPagedResultListに結合されます。
これは、あなたが(それはあなたのために作られている)の呼び出しを開始することなく、getTotalCount()
を使用できることを意味します。これは非常に役に立ちます。例のマニュアルには示しています
def c = Account.createCriteria()
def results = c.list (max: 10, offset: 10) {
like("holderFirstName", "Fred%")
and {
between("balance", 500, 1000)
eq("branch", "London")
}
order("holderLastName", "desc")
}
println "Rendering ${results.size()} Accounts of ${results.totalCount}"
この機能は利用可能withCriteria()
を使用していません。
withCriteriaは、リストを実行して返します。これは、実行前に条件をカスタマイズできるクロージャを提供します。
createCriteriaは、変更可能な基準オブジェクトを作成するだけで、実行するリストメソッドを明示的に呼び出すことができます。
基準が単純な場合、または単一の場所で定義されている場合は、withCriteriaを使用する方がよいでしょう。
基準を渡す必要がある場合(ある関数で作成して他の関数に渡す必要がある場合)、createCriteriaが適切です。私はwithCriteriaのサポートは限られていると思います。
あなたが例を与えることができますしてください? – danielad
withCriteria { ... }
は、実質的にcreateCriteria().list { ... }
の略です。他の基準メソッド(get、count、...)を使用するか、ページ分割パラメータをlist
に渡す必要がある場合は、long-handフォームを使用する必要があります。
SomeDomain.createCriteria().list(max:10, offset:50) {
// ...
}
createCriteria()
の例:
def criteria = OfferCredit.createCriteria {
offer {
eq('status', LeverageUtils.ACTIVE_STATUS)
ge('expirationDate', new Date())
}
user {
eq('userId', userId)
}
eq('status', LeverageUtils.ACTIVE_STATUS)
order('creationDate', 'asc')
}
criteria.list()
withCriteria()
の例:
List<Supermarket> results = Supermarket.withCriteria {
like("sp_street", params.street)
productSupermarket {
product {
idEq(params.product)
}
// or just eq('product', someProduct)
}
maxResults(10)
}
あなたが与えた事例に感謝します。 createCriteraは、ドメインオブジェクトとwithCriteria -applyクエリパラメータを最初に見つけて、次にdominオブジェクトの検索を行った後で、criteriaパラメータを適用するようです。ではない? – danielad
はい! createCriteriaを使用すると、listなどの複数の操作を実行できます。しかし、 'withCriteria'を使用すると、デフォルトの操作はlistになります。 (他の操作はできません)。 –
withCriteria - >
目的 - > Criteriaクエリのインライン実行を許可します。 一致するレコードが見つからない場合は、空のListが返されます。
投影が指定されている場合:
returns a single value if it only contains one field
a List in case there are multiple fields in the projection
- 1. のGrailsのcreateCriteria
- 2. GrailsののcreateCriteriaとのexecuteQuery
- 3. GrailsののcreateCriteria多対多
- 4. Grails createCriteria mysql IF文
- 5. grailsのwithTransactionとwithSessionの違いは何ですか?
- 6. Grails 2.4.4:createCriteria()のデータベースレコードの更新リスト()
- 7. GrailsにはcreateCriteriaのクロージャが含まれています
- 8. このコード行のCreateCriteria equivとは何か:
- 9. grails enumまたはstringプロパティー、将来のdbアップデートの違いは何ですか?
- 10. Grails withTransaction()とトランザクションサービスメソッドの違い
- 11. $と$$の違いは何ですか?
- 12. `##`と `hashCode`の違いは何ですか?
- 13. typedefとの違いは何ですか?
- 14. NodeJS:「./ ..」と「..」の違いは何ですか?
- 15. {}())と{})の違いは何ですか?
- 16. `&`と `ref`の違いは何ですか?
- 17. `==`と `is`の違いは何ですか?
- 18. difftimeと ' - 'の違いは何ですか?
- 19. #{} $ {}と%{}の違いは何ですか?
- 20. ⊕と+の違いは何ですか?
- 21. アペンダーと〜の違いは何ですか?
- 22. "./"と "../"の違いは何ですか?
- 23. "$^N"と "$ +"の違いは何ですか?
- 24. %Qと%{}の違いは何ですか?
- 25. バックスティックと$()の違いは何ですか?
- 26. A`と ``の違いは何ですか[:] `
- 27. Grails 2.0 CreateCriteriaのプライベート属性を照会することができません
- 28. パッケージのインポートobjと何かの違いをインポートパッケージとPythonの何かの違いは何ですか?
- 29. XPathの//と?/の違いは何ですか?の使用は何
- 30. フレームとオブジェクトの違いは何ですか?フレームとオブジェクトの違いは何ですか?
上記のBETWEEN句を使用してfrom/to dateのクエリを書く方法を教えてください。 – VVB
@VVBあなたの質問は、コメントとしてここに含めるのではなく、新しいstackoverflow質問として、より適しています。 – mnd