غرز غورم Missingmethexception مع 1: ن العلاقة
سؤال
لدي مثل فئات النطاقات:
class ServicesGroup {
Long id
String name
String description
String toString(){
return name
}
static mapping = {
version false
table 'root.services_groups'
id column:'group_id'
name column:'group_name'
description column:'group_desc'
}
}
و
class Step {
Long id
ServicesGroup service
String stepType
Integer stepFrom
Integer stepTo
static constraints = {
stepType(inList:['operator', 'client'])
}
static mapping = {
version false
table 'bill.steps'
service column:'service_group_id'
}
}
العلاقة هي - يمكن أن يحتوي إدخال مجموعة الخدمات على مثيلات خطوة متعددة.
ومع ذلك، عندما تكون في جهاز التحكم الخاص بي أحاول
Step.findByService(3)
انا حصلت:
"org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: Step.findByService() is applicable for argument types: (java.lang.Integer) values: {3}"
ومع ذلك، عندما أقوم بتغيير حقل فئة مجال الخطوة
ServicesGroup service
ببساطة
Long service
إنها تعمل.
ماذا يجري هنا؟
المحلول
جربه بهذه الطريقة:
Step.findByService(ServicesGroup.get(3))
نصائح أخرى
يحاول
grails clean
grails run-app
ثم أعد المحاولة.
شيء مثل Step.findbyservice ([ID: 3]) قد تعمل. يهتم فقط بالمعرف على أي حال لأغراض جيل SQL. في كثير من الحالات مثل هذا، يمكنك إرم خريطة مزيفة إلى هناك بدلا من الشيء الحقيقي، وانقذ نفسك بعض الأداء.
من ناحية أخرى، ينهار التجريد قليلا عند القيام بذلك.
لا تنتمي إلى StackOverflow