ich eine solche Domain-Klassen haben:Grails GORM Missing mit 1: N Beziehung
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'
}
}
und
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'
}
}
Die Beziehung ist - ein ServicesGroup Eintrag mehrere Step-Instanzen haben kann.
Wenn jedoch in meinem Controller versuche ich
Step.findByService(3)
ich:
"org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: Step.findByService() is applicable for argument types: (java.lang.Integer) values: {3}"
Allerdings, wenn ich Schritt Domain Klassenfeld ändern
ServicesGroup service
einfach zu
Long service
es funktioniert.
Was geht hier vor?
Das funktioniert! Kannst du mir ein paar Hinweise geben, warum? Etwas in den Zeilen von .. Service-Feld wird als ServicesGroup-Objekt deklariert, daher muss ich das Objekt des angegebenen Typs verwenden, wenn ich mit Service nach Sachen suchen möchte? Gibt es einen direkteren Weg zum gleichen Ergebnis ohne Verschachtelung findBy */get? Danke! – Karolis
Siehe die andere Antwort unten. Ein dritter Weg wäre, die Hibernate-Kriterien zu verwenden und Step.withCriteria {service {eq ("id", 3)}} auszuführen. –