多数のユーザーID(200,000以上)を選択するコードのブロックがあります。次に、コードはループして、さらに情報を取得します。
def crit = Subscription.createCriteria()
def result = crit.get {
projections {
rowCount()
}
eq('userId', userId)
eq('deptId', deptId)
ge('endDate', new Date())
}
'有効な'レコードが存在するかどうかを知りたいだけです。これは正常に機能します。アレイのはるか下のレコードに到達するまで。次に、Grailsは次の例外をスローします。
2012-08-13 16:00:45,518 ERROR subscription.service.SubscriptionServiceImpl(?:?) - No signature of method: static com.me.subscription.model.Subscription.createCriteria() is applicable for argument types: () values: []
groovy.lang.MissingMethodException: No signature of method: static com.me.subscription.model.Subscription.createCriteria() is applicable for argument types: () values: []
何千ものレコードでこのループが正常に行われると、この例外が発生するのはなぜですか?
IntelliJのデバッガーでコードを見ると、すべてのパラメーターが有効であることがわかります。しかし、式を実行すると、次のようになります。
def asd = Subscription.createCriteria()
メソッドがありません。これは模擬的な方法ではありません。これは本番環境で実行されています。トップレベルの境界に到達しましたか?