Let's say I have a domain class called "User" which can follow other "User" objects. It does so having a field specified as:
def hasMany=[followedUsers:User]
I need to do the reverse (find all User objects that follow a specific User object) without setting up the reverse relationship, since it is not a use case performed often. I tried to do something like this, using closures:
User.findAll { it.followedUsers.contains(userInstance) }
but this always returns all users in the database, regardless of their follow status. I tried doing with HQL but failed miserably as well.
Could anyone give me a quick pointer on the simplest way to accomplish this? Thank you.
You can use this HQL query:
User.executeQuery(
'select u from User u where :follower in elements(u.followedUsers)',
[follower: userInstance])
In my opinion, this syntax is much cleaner:
User.withCriteria { followedUsers{ eq('id', userInstance.id) } }
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