{"id":26560,"date":"2015-09-13T22:09:46","date_gmt":"2015-09-13T16:39:46","guid":{"rendered":"https:\/\/2thenew.online\/blog\/?p=26560"},"modified":"2015-09-14T10:24:54","modified_gmt":"2015-09-14T04:54:54","slug":"write-criteria-with-has-many-string-types","status":"publish","type":"post","link":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/","title":{"rendered":"Write Criteria with has many String Types"},"content":{"rendered":"<p>Taking further <a href=\"https:\/\/2thenew.online\/blog\/querying-domain-class-with-hasmany-string-type\/\" target=\"_blank\">this scenario<\/a>, what if we need to query for partial matches of String, like just &#8216;rai&#8217; not &#8216;grails&#8217;.<\/p>\n<p>We face many issues while creating criteria with has many relationship on <em>String<\/em> types as normal way of querying doesn&#8217;t work with has many relationship for <em>String<\/em>\u00a0 types.<\/p>\n<p>One way of getting this done is to use <em>HQL<\/em>. Above mentioned blog is a very good solution when we need to query for exact match. But what if\u00a0requirement is to query for partial matches of String. We\u00a0would modify our <em>HQL<\/em>\u00a0to add more complex <em>where<\/em> clauses, in turn, we\u00a0would end up writing more complex and error prone <em>HQL<\/em>.<\/p>\n<p>Solution is to write <em>Alias<\/em>. Creating criteria is easier and less error prone. Here we can use <em>Alias<\/em> in <em>Criteria<\/em> to\u00a0get this done.<\/p>\n<p>Considering the same example as described in the <a href=\"https:\/\/2thenew.online\/blog\/querying-domain-class-with-hasmany-string-type\/\" target=\"_blank\">referred blog<\/a>:<\/p>\n<p>[java]class Blog {<\/p>\n<p>static hasMany = [tags: String]<\/p>\n<p>} [\/java]<\/p>\n<p><em>createAlias<\/em> can be used to query for all the blogs containing string &#8216;grails&#8217; in its tags.<\/p>\n<p>[java]createCriteria().list {<\/p>\n<p>createAlias(&#8216;tags&#8217; , &#8216;n&#8217;)<br \/>\nilike(&#8216;n.elements&#8217;,&#8217;%&#8217;+tagName+&#8217;%&#8217;)<\/p>\n<p>}[\/java]<\/p>\n<p>PS : This solution works above 2.4.x grails version.<\/p>\n<p>Hope This helps !!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Taking further this scenario, what if we need to query for partial matches of String, like just &#8216;rai&#8217; not &#8216;grails&#8217;. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn&#8217;t work with has many relationship for String\u00a0 types. One way of getting this done is [&hellip;]<\/p>\n","protected":false},"author":227,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":3,"footnotes":""},"categories":[1],"tags":[4840,265],"class_list":["post-26560","post","type-post","status-publish","format-standard","hentry","category-technology","tag-grails","tag-hibernate"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Taking further this scenario, what if we need to query for partial matches of String, like just &#039;rai&#039; not &#039;grails&#039;. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn&#039;t work with has many relationship for String types. One way of getting this done is\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Kirti Nandwani\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/\" \/>\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=\"Write Criteria with has many String Types | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"Taking further this scenario, what if we need to query for partial matches of String, like just &#039;rai&#039; not &#039;grails&#039;. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn&#039;t work with has many relationship for String types. One way of getting this done is\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/\" \/>\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=\"Write Criteria with has many String Types | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Taking further this scenario, what if we need to query for partial matches of String, like just &#039;rai&#039; not &#039;grails&#039;. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn&#039;t work with has many relationship for String types. One way of getting this done is\" \/>\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\\\/write-criteria-with-has-many-string-types\\\/#article\",\"name\":\"Write Criteria with has many String Types | TO THE NEW Blog\",\"headline\":\"Write Criteria with has many String Types\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/kirti-nandwani\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2015-09-13T22:09:46+05:30\",\"dateModified\":\"2015-09-14T10:24:54+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#webpage\"},\"articleSection\":\"Technology, Grails, hibernate\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#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\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#listItem\",\"name\":\"Write Criteria with has many String Types\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#listItem\",\"position\":3,\"name\":\"Write Criteria with has many String Types\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}}]},{\"@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\\\/kirti-nandwani\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/kirti-nandwani\\\/\",\"name\":\"Kirti Nandwani\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/b7ea497a-6730-4b2d-b32d-f514c544513a_442-Kirti-Nandwani-PROFILEPICTURE.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Kirti Nandwani\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/\",\"name\":\"Write Criteria with has many String Types | TO THE NEW Blog\",\"description\":\"Taking further this scenario, what if we need to query for partial matches of String, like just 'rai' not 'grails'. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn't work with has many relationship for String types. One way of getting this done is\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/write-criteria-with-has-many-string-types\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/kirti-nandwani\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/kirti-nandwani\\\/#author\"},\"datePublished\":\"2015-09-13T22:09:46+05:30\",\"dateModified\":\"2015-09-14T10:24:54+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":"Write Criteria with has many String Types | TO THE NEW Blog","description":"Taking further this scenario, what if we need to query for partial matches of String, like just 'rai' not 'grails'. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn't work with has many relationship for String types. One way of getting this done is","canonical_url":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#article","name":"Write Criteria with has many String Types | TO THE NEW Blog","headline":"Write Criteria with has many String Types","author":{"@id":"https:\/\/2thenew.online\/blog\/author\/kirti-nandwani\/#author"},"publisher":{"@id":"https:\/\/2thenew.online\/blog\/#organization"},"datePublished":"2015-09-13T22:09:46+05:30","dateModified":"2015-09-14T10:24:54+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#webpage"},"isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#webpage"},"articleSection":"Technology, Grails, hibernate"},{"@type":"BreadcrumbList","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#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\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/2thenew.online\/blog\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#listItem","name":"Write Criteria with has many String Types"},"previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#listItem","position":3,"name":"Write Criteria with has many String Types","previousItem":{"@type":"ListItem","@id":"https:\/\/2thenew.online\/blog\/category\/technology\/#listItem","name":"Technology"}}]},{"@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\/kirti-nandwani\/#author","url":"https:\/\/2thenew.online\/blog\/author\/kirti-nandwani\/","name":"Kirti Nandwani","image":{"@type":"ImageObject","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/b7ea497a-6730-4b2d-b32d-f514c544513a_442-Kirti-Nandwani-PROFILEPICTURE.jpeg","width":96,"height":96,"caption":"Kirti Nandwani"}},{"@type":"WebPage","@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#webpage","url":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/","name":"Write Criteria with has many String Types | TO THE NEW Blog","description":"Taking further this scenario, what if we need to query for partial matches of String, like just 'rai' not 'grails'. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn't work with has many relationship for String types. One way of getting this done is","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/2thenew.online\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/#breadcrumblist"},"author":{"@id":"https:\/\/2thenew.online\/blog\/author\/kirti-nandwani\/#author"},"creator":{"@id":"https:\/\/2thenew.online\/blog\/author\/kirti-nandwani\/#author"},"datePublished":"2015-09-13T22:09:46+05:30","dateModified":"2015-09-14T10:24:54+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":"Write Criteria with has many String Types | TO THE NEW Blog","og:description":"Taking further this scenario, what if we need to query for partial matches of String, like just 'rai' not 'grails'. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn't work with has many relationship for String types. One way of getting this done is","og:url":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/","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":"Write Criteria with has many String Types | TO THE NEW Blog","twitter:description":"Taking further this scenario, what if we need to query for partial matches of String, like just 'rai' not 'grails'. We face many issues while creating criteria with has many relationship on String types as normal way of querying doesn't work with has many relationship for String types. One way of getting this done is","twitter:image":"https:\/\/2thenew.online\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"26560","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":"","og_description":"","og_object_type":"blog","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":"","og_custom_url":null,"og_article_section":"","og_article_tags":"","twitter_use_og":false,"twitter_card":"summary","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 12:23:44","updated":"2024-02-29 08:34:23","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\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tWrite Criteria with has many String Types\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/2thenew.online\/blog"},{"label":"Technology","link":"https:\/\/2thenew.online\/blog\/category\/technology\/"},{"label":"Write Criteria with has many String Types","link":"https:\/\/2thenew.online\/blog\/write-criteria-with-has-many-string-types\/"}],"_links":{"self":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/26560","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\/227"}],"replies":[{"embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/comments?post=26560"}],"version-history":[{"count":0,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/posts\/26560\/revisions"}],"wp:attachment":[{"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/media?parent=26560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/categories?post=26560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/2thenew.online\/blog\/wp-json\/wp\/v2\/tags?post=26560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}