{"id":2651,"date":"2011-01-17T00:26:18","date_gmt":"2011-01-16T18:56:18","guid":{"rendered":"https:\/\/2thenew.online\/blog\/?p=2651"},"modified":"2016-12-19T15:19:22","modified_gmt":"2016-12-19T09:49:22","slug":"grails-criteria-query-createalias-made-it-easy","status":"publish","type":"post","link":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/","title":{"rendered":"Grails criteria query : &#8216;createAlias&#8217; made it easy"},"content":{"rendered":"<p>Hello friends,<\/p>\n<p>In my grails project, I was finding it difficult to write a query using criteria which can be read as &#8216;list all customers whose current account balance is more than minimum account balance of that customer&#8217;. The simplified form of the domain is given below :<br \/>\n[java]<br \/>\nclass Customer {<br \/>\n   String name<br \/>\n   Account account<br \/>\n   BigDecimal minAccountBalance<br \/>\n   &#8230;<br \/>\n}<\/p>\n<p>class Account {<br \/>\n   BigDecimal currentBalance<br \/>\n   &#8230;<br \/>\n}<br \/>\n[\/java]<\/p>\n<p>As far as my understanding goes, criteria provides comparison between the fields in the same domain but I needed to compare values between two domains. After spending some time on it, I could make it work using  &#8216;createAlias&#8217;  statement. Before you go through the query, please have a look at one of the nice blog written by Rob Fletcher which is available <a href=\"http:\/\/adhockery.blogspot.com\/2009\/06\/querying-by-association-redux.html\" target=\"_blank\">here<\/a>  to understand what &#8216;createAlias&#8217; does. <\/p>\n<p>Here is the query :<br \/>\n[java]<br \/>\nCustomer.createCriteria().list(){<br \/>\n      createAlias(&#8216;account&#8217;, &#8216;acc&#8217;)<br \/>\n      gtProperty(&#8216;acc.currentBalance&#8217;, &#8216;minAccountBalance&#8217;)<br \/>\n    }<br \/>\n[\/java]<\/p>\n<p>Hope this helped!<\/p>\n<p>Cheers!<\/p>\n<p>~~Amit Jain~~<br \/>\namit@intelligrape.com<br \/>\nhttps:\/\/2thenew.online<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as &#8216;list all customers whose current account balance is more than minimum account balance of that customer&#8217;. The simplified form of the domain is given below : [java] class Customer { String name Account [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":53,"footnotes":""},"categories":[7],"tags":[500,499,498,4840],"class_list":["post-2651","post","type-post","status-publish","format-standard","hentry","category-grails","tag-compare-between-two-domains","tag-createalias","tag-criteria","tag-grails"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as &#039;list all customers whose current account balance is more than minimum account balance of that customer&#039;. The simplified form of the domain is given below : [java] class Customer { String name Account\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Amit Jain\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/\" \/>\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 : \u2018createAlias\u2019 made it easy | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as &#039;list all customers whose current account balance is more than minimum account balance of that customer&#039;. The simplified form of the domain is given below : [java] class Customer { String name Account\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/\" \/>\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 : \u2018createAlias\u2019 made it easy | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as &#039;list all customers whose current account balance is more than minimum account balance of that customer&#039;. The simplified form of the domain is given below : [java] class Customer { String name Account\" \/>\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-criteria-query-createalias-made-it-easy\\\/#article\",\"name\":\"Grails criteria query : \\u2018createAlias\\u2019 made it easy | TO THE NEW Blog\",\"headline\":\"Grails criteria query : &#8216;createAlias&#8217; made it easy\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/amit\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2011-01-17T00:26:18+05:30\",\"dateModified\":\"2016-12-19T15:19:22+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#webpage\"},\"articleSection\":\"Grails, compare between two domains, createAlias, criteria, Grails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#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-criteria-query-createalias-made-it-easy\\\/#listItem\",\"name\":\"Grails criteria query : &#8216;createAlias&#8217; made it easy\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#listItem\",\"position\":3,\"name\":\"Grails criteria query : &#8216;createAlias&#8217; made it easy\",\"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\\\/amit\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/amit\\\/\",\"name\":\"Amit Jain\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/1cbbcbd3-718c-4d6d-829c-4e225ae91a1a_amit.jain@tothenew.com.jpg\",\"width\":96,\"height\":96,\"caption\":\"Amit Jain\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/\",\"name\":\"Grails criteria query : \\u2018createAlias\\u2019 made it easy | TO THE NEW Blog\",\"description\":\"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as 'list all customers whose current account balance is more than minimum account balance of that customer'. The simplified form of the domain is given below : [java] class Customer { String name Account\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/grails-criteria-query-createalias-made-it-easy\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/amit\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/amit\\\/#author\"},\"datePublished\":\"2011-01-17T00:26:18+05:30\",\"dateModified\":\"2016-12-19T15:19:22+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 : \u2018createAlias\u2019 made it easy | TO THE NEW Blog","description":"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as 'list all customers whose current account balance is more than minimum account balance of that customer'. The simplified form of the domain is given below : [java] class Customer { String name Account","canonical_url":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#article","name":"Grails criteria query : \u2018createAlias\u2019 made it easy | TO THE NEW Blog","headline":"Grails criteria query : &#8216;createAlias&#8217; made it easy","author":{"@id":"https:\/\/2thenew.online\/blog\/author\/amit\/#author"},"publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"},"datePublished":"2011-01-17T00:26:18+05:30","dateModified":"2016-12-19T15:19:22+05:30","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#webpage"},"articleSection":"Grails, compare between two domains, createAlias, criteria, Grails"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#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-criteria-query-createalias-made-it-easy\/#listItem","name":"Grails criteria query : &#8216;createAlias&#8217; made it easy"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#listItem","position":3,"name":"Grails criteria query : &#8216;createAlias&#8217; made it easy","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\/amit\/#author","url":"https:\/\/2thenew.online\/blog\/author\/amit\/","name":"Amit Jain","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/1cbbcbd3-718c-4d6d-829c-4e225ae91a1a_amit.jain@tothenew.com.jpg","width":96,"height":96,"caption":"Amit Jain"}},{"@type":"WebPage","@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#webpage","url":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/","name":"Grails criteria query : \u2018createAlias\u2019 made it easy | TO THE NEW Blog","description":"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as 'list all customers whose current account balance is more than minimum account balance of that customer'. The simplified form of the domain is given below : [java] class Customer { String name Account","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.online\/blog\/author\/amit\/#author"},"creator":{"@id":"https:\/\/2thenew.online\/blog\/author\/amit\/#author"},"datePublished":"2011-01-17T00:26:18+05:30","dateModified":"2016-12-19T15:19:22+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 : \u2018createAlias\u2019 made it easy | TO THE NEW Blog","og:description":"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as 'list all customers whose current account balance is more than minimum account balance of that customer'. The simplified form of the domain is given below : [java] class Customer { String name Account","og:url":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/","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 : \u2018createAlias\u2019 made it easy | TO THE NEW Blog","twitter:description":"Hello friends, In my grails project, I was finding it difficult to write a query using criteria which can be read as 'list all customers whose current account balance is more than minimum account balance of that customer'. The simplified form of the domain is given below : [java] class Customer { String name Account","twitter:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"2651","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-29 14:54:26","updated":"2024-02-29 09:26:21","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 : \u2018createAlias\u2019 made it easy\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 : &#8216;createAlias&#8217; made it easy","link":"https:\/\/2thenew.online\/blog\/grails-criteria-query-createalias-made-it-easy\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/2651","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\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/comments?post=2651"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/2651\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/media?parent=2651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/categories?post=2651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/tags?post=2651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}