سؤال

لدي مثل فئات النطاقات:

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. في كثير من الحالات مثل هذا، يمكنك إرم خريطة مزيفة إلى هناك بدلا من الشيء الحقيقي، وانقذ نفسك بعض الأداء.

من ناحية أخرى، ينهار التجريد قليلا عند القيام بذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top