{"id":1057,"date":"2010-06-14T15:22:03","date_gmt":"2010-06-14T09:52:03","guid":{"rendered":"https:\/\/2thenew.online\/blog\/?p=1057"},"modified":"2016-12-19T15:28:30","modified_gmt":"2016-12-19T09:58:30","slug":"grails-createcriteria-query-example","status":"publish","type":"post","link":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/","title":{"rendered":"Grails criteria query example for unidirectional one-to-many relationships"},"content":{"rendered":"<p>Following is an example of unidirectional one-to-many relationship:<\/p>\n<pre lang=\"groovy\">\r\nclass Employee {\r\n    String name\r\n    static hasMany = [roles: Role]\r\n}\r\n\r\nclass Role {\r\n    String name\r\n}\r\n<\/pre>\n<p>How can we find all the employees with a particular role &#8211; &#8220;Grails Developer&#8221;?<\/p>\n<pre lang=\"groovy\">\r\nRole role = Role.findByName(\"Grails Developer\")\r\n<\/pre>\n<p>One way of doing this can be: <\/p>\n<pre lang=\"groovy\">\r\nEmployee.list().findAll{role in it.roles}\r\n<\/pre>\n<p>This is an inefficient way since, we are fetching all the records from the database every time. Also, in case we are showing paginated view of results, we will need to manage pagination ourself. <\/p>\n<p>A better way of this will be using createCriteria() query:<\/p>\n<pre lang=\"groovy\">\r\nList<Employee> employees = Employee.createCriteria().list{\r\n    roles{\r\n        eq('id', role.id)\r\n    }\t\r\n    firstResult(20)\r\n    maxResults(20)\t\r\n}\t\r\n<\/pre>\n<p>I am wondering what will be the query in case Role.groovy is an enum.<\/p>\n<p>\u2013<br \/>\n~Aman Aggarwal<br \/>\naman@intelligrape.com<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"dz391xtP4S\"><p><a href=\"https:\/\/2thenew.online\/blog\/\">Home<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u201cHome\u201d \u2014 TO THE NEW Blog\" src=\"https:\/\/2thenew.online\/blog\/embed\/#?secret=c7poBNQGTH#?secret=dz391xtP4S\" data-secret=\"dz391xtP4S\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role &#8211; &#8220;Grails Developer&#8221;? Role role = Role.findByName(&#8220;Grails Developer&#8221;) One way of doing this can be: Employee.list().findAll{role in it.roles} This [&hellip;]<\/p>\n","protected":false},"author":282,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":39,"footnotes":""},"categories":[7],"tags":[266,269,4840,265,270],"class_list":["post-1057","post","type-post","status-publish","format-standard","hentry","category-grails","tag-createcriteria","tag-criteria-query","tag-grails","tag-hibernate","tag-unidirectional"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - &quot;Grails Developer&quot;? Role role = Role.findByName(&quot;Grails Developer&quot;) One way of doing this can be: Employee.list().findAll{role in it.roles} This\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Aman Aggarwal\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - &quot;Grails Developer&quot;? Role role = Role.findByName(&quot;Grails Developer&quot;) One way of doing this can be: Employee.list().findAll{role in it.roles} This\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - &quot;Grails Developer&quot;? Role role = Role.findByName(&quot;Grails Developer&quot;) One way of doing this can be: Employee.list().findAll{role in it.roles} This\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#article\",\"name\":\"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog\",\"headline\":\"Grails criteria query example for unidirectional one-to-many relationships\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aman-2\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2010-06-14T15:22:03+05:30\",\"dateModified\":\"2016-12-19T15:28:30+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":1,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#webpage\"},\"articleSection\":\"Grails, createCriteria, criteria query, Grails, hibernate, unidirectional\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"position\":2,\"name\":\"Grails\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#listItem\",\"name\":\"Grails criteria query example for unidirectional one-to-many relationships\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#listItem\",\"position\":3,\"name\":\"Grails criteria query example for unidirectional one-to-many relationships\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/grails\\\/#listItem\",\"name\":\"Grails\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aman-2\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aman-2\\\/\",\"name\":\"Aman Aggarwal\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/66589b6a-51bb-47a9-98a1-5921aac69bd9_aman.aggarwal@tothenew.com.jpg\",\"width\":96,\"height\":96,\"caption\":\"Aman Aggarwal\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/\",\"name\":\"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog\",\"description\":\"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - \\\"Grails Developer\\\"? Role role = Role.findByName(\\\"Grails Developer\\\") One way of doing this can be: Employee.list().findAll{role in it.roles} This\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-createcriteria-query-example\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aman-2\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/aman-2\\\/#author\"},\"datePublished\":\"2010-06-14T15:22:03+05:30\",\"dateModified\":\"2016-12-19T15:28:30+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog","description":"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - \"Grails Developer\"? Role role = Role.findByName(\"Grails Developer\") One way of doing this can be: Employee.list().findAll{role in it.roles} This","canonical_url":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#article","name":"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog","headline":"Grails criteria query example for unidirectional one-to-many relationships","author":{"@id":"https:\/\/2thenew.online\/blog\/author\/aman-2\/#author"},"publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"},"datePublished":"2010-06-14T15:22:03+05:30","dateModified":"2016-12-19T15:28:30+05:30","inLanguage":"en-US","commentCount":1,"mainEntityOfPage":{"@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#webpage"},"articleSection":"Grails, createCriteria, criteria query, Grails, hibernate, unidirectional"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.online\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","name":"Grails"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","position":2,"name":"Grails","item":"https:\/\/2thenew.online\/blog\/category\/grails\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#listItem","name":"Grails criteria query example for unidirectional one-to-many relationships"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#listItem","position":3,"name":"Grails criteria query example for unidirectional one-to-many relationships","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/grails\/#listItem","name":"Grails"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.online\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.online\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.online\/blog\/author\/aman-2\/#author","url":"https:\/\/2thenew.online\/blog\/author\/aman-2\/","name":"Aman Aggarwal","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/66589b6a-51bb-47a9-98a1-5921aac69bd9_aman.aggarwal@tothenew.com.jpg","width":96,"height":96,"caption":"Aman Aggarwal"}},{"@type":"WebPage","@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#webpage","url":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/","name":"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog","description":"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - \"Grails Developer\"? Role role = Role.findByName(\"Grails Developer\") One way of doing this can be: Employee.list().findAll{role in it.roles} This","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.online\/blog\/author\/aman-2\/#author"},"creator":{"@id":"https:\/\/2thenew.online\/blog\/author\/aman-2\/#author"},"datePublished":"2010-06-14T15:22:03+05:30","dateModified":"2016-12-19T15:28:30+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.online\/blog\/#website","url":"https:\/\/2thenew.online\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog","og:description":"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - &quot;Grails Developer&quot;? Role role = Role.findByName(&quot;Grails Developer&quot;) One way of doing this can be: Employee.list().findAll{role in it.roles} This","og:url":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/","og:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Grails criteria query example for unidirectional one-to-many relationships | TO THE NEW Blog","twitter:description":"Following is an example of unidirectional one-to-many relationship: class Employee { String name static hasMany = [roles: Role] } class Role { String name } How can we find all the employees with a particular role - &quot;Grails Developer&quot;? Role role = Role.findByName(&quot;Grails Developer&quot;) One way of doing this can be: Employee.list().findAll{role in it.roles} This","twitter:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"1057","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-30 00:03:04","updated":"2024-02-29 09:34:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/2thenew.online\/blog\/category\/grails\/\" title=\"Grails\">Grails<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tGrails criteria query example for unidirectional one-to-many relationships\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.online\/blog"},{"label":"Grails","link":"https:\/\/2thenew.online\/blog\/category\/grails\/"},{"label":"Grails criteria query example for unidirectional one-to-many relationships","link":"https:\/\/2thenew.online\/blog\/grails-createcriteria-query-example\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/1057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/users\/282"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/comments?post=1057"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/1057\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/media?parent=1057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/categories?post=1057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/tags?post=1057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}