If I have a Client domain class, and that Client hasMany Courses. How do I find the course I'm looking for? For instance:
class Client {
String name
static hasMany = [courses:Course]
}
class Course {
String name
static belongsTo = [client:Client]
}
def client = Client.get(1)
I want to "find" or "search" within that courses relationship. Maybe something like:
client.courses.find(name:'Whatever')
Is there any way to do this with Grails?
If you're using a second level cache and have configured it for this association, you might want to iterate over the collection (this will save you a database query if the association is in cache).
Here is an example using the clever Groovy Collection API:
def course = client.courses.find { it.name == "whatever" }
Important: If you decide to take this approach make sure to configure eager / batch fetching of courses
so you don't run into the n+1 problem.
One way is with dynamic finder methods:
Courses.findAllByClientAndName(client, 'whatever')
This would get all a client's courses named 'whatever'.
Grails also has few other ways to accomplish this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With