{"id":5083,"date":"2012-02-13T15:00:56","date_gmt":"2012-02-13T09:30:56","guid":{"rendered":"https:\/\/2thenew.xyz\/blog\/?p=5083"},"modified":"2012-02-13T15:00:56","modified_gmt":"2012-02-13T09:30:56","slug":"using-aliases-in-aggregate-functions-of-criteria-queries","status":"publish","type":"post","link":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/","title":{"rendered":"Using aliases in aggregate functions of criteria queries"},"content":{"rendered":"<p>When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on  our result set, in these cases aliases can be used. <\/p>\n<pre>\r\n<\/pre>\n<p>In my project,  use case was to find most liked products from the domain:<br \/>\n[java]<br \/>\nProductStat{<br \/>\nDate dateCreated<br \/>\nProduct product<br \/>\n}<br \/>\n[\/java]<br \/>\nTo find the result, the query I used was :<\/p>\n<p>[java]<br \/>\nProductStat.createCriteria().list() {<br \/>\n            projections {<br \/>\n                groupProperty(&quot;product&quot;)<br \/>\n                count(&quot;product&quot;, &quot;totalProducts&quot;)  \/\/ alias totalProducts<br \/>\n            }<br \/>\n            order(&quot;totalProducts&quot;, &quot;desc&quot;)<br \/>\n}<br \/>\n[\/java]<\/p>\n<pre>\r\n<\/pre>\n<p>In this way using alias &#8220;totalProducts&#8221; I was able to order the result according to the count of products.<\/p>\n<pre>\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated [&hellip;]<\/p>\n","protected":false},"author":57,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":4,"footnotes":""},"categories":[7],"tags":[764,266,269,4840],"class_list":["post-5083","post","type-post","status-publish","format-standard","hentry","category-grails","tag-aliases","tag-createcriteria","tag-criteria-query","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=\"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Puneet Behl\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/\" \/>\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=\"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/2thenew.xyz\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/2thenew.xyz\/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=\"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/2thenew.xyz\/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\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#article\",\"name\":\"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog\",\"headline\":\"Using aliases in aggregate functions of criteria queries\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/puneet-behl\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-02-13T15:00:56+05:30\",\"dateModified\":\"2012-02-13T15:00:56+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":2,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#webpage\"},\"articleSection\":\"Grails, aliases, createCriteria, criteria query, Grails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#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\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#listItem\",\"name\":\"Using aliases in aggregate functions of criteria queries\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#listItem\",\"position\":3,\"name\":\"Using aliases in aggregate functions of criteria queries\",\"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\\\/puneet-behl\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/puneet-behl\\\/\",\"name\":\"Puneet Behl\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/9b6468fa-13e0-4dbc-8a73-9fa9d1ecf84e_puneet.behl@tothenew.com.jpg\",\"width\":96,\"height\":96,\"caption\":\"Puneet Behl\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/\",\"name\":\"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog\",\"description\":\"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/using-aliases-in-aggregate-functions-of-criteria-queries\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/puneet-behl\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/puneet-behl\\\/#author\"},\"datePublished\":\"2012-02-13T15:00:56+05:30\",\"dateModified\":\"2012-02-13T15:00:56+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":"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog","description":"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated","canonical_url":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#article","name":"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog","headline":"Using aliases in aggregate functions of criteria queries","author":{"@id":"https:\/\/2thenew.xyz\/blog\/author\/puneet-behl\/#author"},"publisher":{"@id":"https:\/\/2thenew.xyz\/blog\/#organization"},"datePublished":"2012-02-13T15:00:56+05:30","dateModified":"2012-02-13T15:00:56+05:30","inLanguage":"en-US","commentCount":2,"mainEntityOfPage":{"@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#webpage"},"articleSection":"Grails, aliases, createCriteria, criteria query, Grails"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog#listItem","position":1,"name":"Home","item":"https:\/\/2thenew.xyz\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog\/category\/grails\/#listItem","name":"Grails"}},{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog\/category\/grails\/#listItem","position":2,"name":"Grails","item":"https:\/\/2thenew.xyz\/blog\/category\/grails\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#listItem","name":"Using aliases in aggregate functions of criteria queries"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#listItem","position":3,"name":"Using aliases in aggregate functions of criteria queries","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.xyz\/blog\/category\/grails\/#listItem","name":"Grails"}}]},{"@type":"Organization","@id":"https:\/\/2thenew.xyz\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/2thenew.xyz\/blog\/"},{"@type":"Person","@id":"https:\/\/2thenew.xyz\/blog\/author\/puneet-behl\/#author","url":"https:\/\/2thenew.xyz\/blog\/author\/puneet-behl\/","name":"Puneet Behl","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/9b6468fa-13e0-4dbc-8a73-9fa9d1ecf84e_puneet.behl@tothenew.com.jpg","width":96,"height":96,"caption":"Puneet Behl"}},{"@type":"WebPage","@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#webpage","url":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/","name":"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog","description":"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.xyz\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.xyz\/blog\/author\/puneet-behl\/#author"},"creator":{"@id":"https:\/\/2thenew.xyz\/blog\/author\/puneet-behl\/#author"},"datePublished":"2012-02-13T15:00:56+05:30","dateModified":"2012-02-13T15:00:56+05:30"},{"@type":"WebSite","@id":"https:\/\/2thenew.xyz\/blog\/#website","url":"https:\/\/2thenew.xyz\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/2thenew.xyz\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog","og:description":"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated","og:url":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/","og:image":"https:\/\/2thenew.xyz\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/2thenew.xyz\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Using aliases in aggregate functions of criteria queries | TO THE NEW Blog","twitter:description":"When using criteria queries, many times we encounter a use case where we need to order our result not on any field of domain class but on our result set, in these cases aliases can be used. In my project, use case was to find most liked products from the domain: [java] ProductStat{ Date dateCreated","twitter:image":"https:\/\/2thenew.xyz\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"5083","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 01:23:07","updated":"2024-02-29 09:35:22","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.xyz\/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.xyz\/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\tUsing aliases in aggregate functions of criteria queries\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.xyz\/blog"},{"label":"Grails","link":"https:\/\/2thenew.xyz\/blog\/category\/grails\/"},{"label":"Using aliases in aggregate functions of criteria queries","link":"https:\/\/2thenew.xyz\/blog\/using-aliases-in-aggregate-functions-of-criteria-queries\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/posts\/5083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/users\/57"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/comments?post=5083"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/posts\/5083\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/media?parent=5083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/categories?post=5083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.xyz\/blog\/wp-json\/wp\/v2\/tags?post=5083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}