{"id":7566,"date":"2023-01-05T15:05:44","date_gmt":"2023-01-05T09:35:44","guid":{"rendered":"https:\/\/innovationm.co\/?p=7566"},"modified":"2023-01-05T15:10:50","modified_gmt":"2023-01-05T09:40:50","slug":"derived-query-methods-of-spring-data-jpa","status":"publish","type":"post","link":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/","title":{"rendered":"Derived Query Methods of Spring Data JPA"},"content":{"rendered":"<p><strong>Use Derived Query Methods of Spring Data JPA Repositories instead of writing your own queries.<\/strong><\/p>\n<p>For the simple jpa queries, we generally use @Query annotation to make the queries, but the best practice says that we should use Derived Query Methods instead. Most developers hardly use one or two derived query methods like findById, and findAll but we can use many of them and get the job done so quickly. Check out below :<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>Structure of Derived Query Methods :<\/strong><\/li>\n<\/ol>\n<p>Derived methods have two main parts separated by the By keyword :<\/p>\n<pre><strong>List&lt;User&gt; findByName(String name)<\/strong><\/pre>\n<p>The first part &#8211; find is the introducer and the rest &#8211; ByName is the criteria. You can make your own criteria according to your model\u2019s properties such as <strong>findByName, findByAge, findByEmail, <\/strong>etc.<\/p>\n<p>Spring Data JPA supports many introducers to <strong>find, read, query, count, and get. <\/strong>So, we could have done <strong>countByAge(int age) <\/strong>and we would get a count of the users having that age.<\/p>\n<p>We can also use First, Top, or Distinct to remove duplicates like<\/p>\n<p><strong>List&lt;User&gt; findTop3ByAge(), <\/strong>\u00a0and we\u2019ll get the list of the top 3 users by age, isn\u2019t it awesome?<\/p>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>Equality Condition Keywords :<\/strong><\/li>\n<\/ol>\n<p>We can add Is or Equals for readability :<\/p>\n<pre>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>List&lt;User&gt; findByNameIs(String name);<\/strong>\r\n\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByNameEquals(String name);<\/strong><\/pre>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>When we need to express inequality instead :<\/p>\n<p>&nbsp;<\/p>\n<pre>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>List&lt;User&gt; findByNameIsNot(String name);<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p>We can also use the IsNull keyword to add NULL criteria in the query :<\/p>\n<pre><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByNameIsNull();<\/strong>\r\n\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByNameIsNotNull();<\/strong><\/pre>\n<p><strong>\u00a0<\/strong><\/p>\n<p>We can also use True and False keywords to add equality conditions for boolean types:<\/p>\n<pre>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>List&lt;User&gt; findByActiveTrue();<\/strong>\r\n\r\n<strong> \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByActiveFalse();<\/strong><\/pre>\n<ol>\n<li><strong>Similarity Condition Keywords :<\/strong><\/li>\n<\/ol>\n<p>We can find entries that start with a value using StartingWith :<\/p>\n<pre><strong>\u00a0List&lt;User&gt; findByNameStartingWith(String prefix);<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p>If we want the entries that end with a value, we can use EndingWith :<\/p>\n<pre><strong>List&lt;User&gt; findByNameEndingWith(String suffix);<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0<\/strong>We can find entries containing a value using Containing :<\/p>\n<pre><strong>List&lt;User&gt; findByNameContaining(String infix);<\/strong><\/pre>\n<p><strong>\u00a0<\/strong><\/p>\n<ol>\n<li><strong>Comparison Condition Keywords :<\/strong><\/li>\n<\/ol>\n<p>We can use LessThan, LessThanEqual, GreaterThan, and GreaterThanEqual keywords in order to get the data by comparing the records, for example :<\/p>\n<p>&nbsp;<\/p>\n<pre><strong>List&lt;User&gt; findBySalaryLessThan(Integer salary);<\/strong>\r\n\r\n<strong>List&lt;User&gt; findBySalaryLessThanEqual(Integer salary);<\/strong>\r\n\r\n<strong>List&lt;User&gt; findBySalaryGreaterThan(Integer salary);<\/strong>\r\n\r\n<strong>List&lt;User&gt; findBySalaryGreaterThanEqual(Integer salary);<\/strong><\/pre>\n<p><strong>\u00a0<\/strong><\/p>\n<p>More exciting is that we can find entries between two parameters using Between keyword, for example :<\/p>\n<p>We can find Users who are between two salaries :<\/p>\n<pre><strong>List&lt;User&gt; findBySalaryBetween(Integer startSalary, Integer endSalary);<\/strong><\/pre>\n<p>For the date and time, we can use the Before and After keywords:<\/p>\n<pre><strong>List&lt;User&gt; findByBirthDateAfter(DateTime birthDate);<\/strong>\r\n\r\n<strong>List&lt;User&gt; findByBirthDateBefore(DateTime birthDate);<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<ol>\n<li><strong>Multiple Condition Expressions :<\/strong><\/li>\n<\/ol>\n<p>The most amazing thing is here, We can combine multiple expressions by using And and Or keywords, take a look :<\/p>\n<p>&nbsp;<\/p>\n<pre><strong>List&lt;User&gt; findByNameOrSalary(String name, Integer salary);<\/strong>\r\n\r\n<strong>\u00a0List&lt;User&gt; findByNameAndEmail(String name, String email);<\/strong>\r\n\r\n<strong>\u00a0<\/strong><strong>List&lt;User&gt; findByEmailOrBirthDateOrSalaryAndActive(String email, DateTime birthDate, Integer Salary, Boolean active);<\/strong><\/pre>\n<p><strong>\u00a0<\/strong><\/p>\n<p>We can combine as much expression as we need.<\/p>\n<ol>\n<li><strong>Sorted Data :<\/strong><\/li>\n<\/ol>\n<p><strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong>We can get sorted data by using OrderBy keyword :<\/p>\n<pre>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>List&lt;User&gt; findByNameOrderByName(String name);<\/strong>\r\n\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByNameOrderByNameAsc(String name);<\/strong>\r\n\r\n<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 List&lt;User&gt; findByNameOrderByNameDesc(String name);<\/strong><\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u00a0<\/strong><\/p>\n<p><strong>\u00a0<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use Derived Query Methods of Spring Data JPA Repositories instead of writing your own queries. For the simple jpa queries, we generally use @Query annotation to make the queries, but the best practice says that we should use Derived Query Methods instead. Most developers hardly use one or two derived query methods like findById, and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":7567,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[256,360,71],"tags":[722,701,822,821,765],"class_list":["post-7566","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-application","category-javascript","category-mobile","tag-blog","tag-coding","tag-methods-query","tag-query","tag-technology"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Derived Query Methods of Spring Data JPA - InnovationM - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Derived Query Methods of Spring Data JPA - InnovationM - Blog\" \/>\n<meta property=\"og:description\" content=\"Use Derived Query Methods of Spring Data JPA Repositories instead of writing your own queries. For the simple jpa queries, we generally use @Query annotation to make the queries, but the best practice says that we should use Derived Query Methods instead. Most developers hardly use one or two derived query methods like findById, and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/\" \/>\n<meta property=\"og:site_name\" content=\"InnovationM - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-05T09:35:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-05T09:40:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1689\" \/>\n\t<meta property=\"og:image:height\" content=\"950\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"InnovationM Admin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"InnovationM Admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/\"},\"author\":{\"name\":\"InnovationM Admin\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"headline\":\"Derived Query Methods of Spring Data JPA\",\"datePublished\":\"2023-01-05T09:35:44+00:00\",\"dateModified\":\"2023-01-05T09:40:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/\"},\"wordCount\":396,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Derived-Query-Methods.png\",\"keywords\":[\"blog\",\"coding\",\"methods query\",\"query\",\"technology\"],\"articleSection\":[\"Java Application\",\"JavaScript\",\"Mobile\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/\",\"name\":\"Derived Query Methods of Spring Data JPA - InnovationM - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Derived-Query-Methods.png\",\"datePublished\":\"2023-01-05T09:35:44+00:00\",\"dateModified\":\"2023-01-05T09:40:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Derived-Query-Methods.png\",\"contentUrl\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/01\\\/Derived-Query-Methods.png\",\"width\":1689,\"height\":950},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/derived-query-methods-of-spring-data-jpa\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Derived Query Methods of Spring Data JPA\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/\",\"name\":\"InnovationM - Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/#\\\/schema\\\/person\\\/a831bf4602d69d1fa452e3de0c8862ed\",\"name\":\"InnovationM Admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g\",\"caption\":\"InnovationM Admin\"},\"sameAs\":[\"http:\\\/\\\/www.innovationm.com\\\/\"],\"url\":\"https:\\\/\\\/www.innovationm.com\\\/blog\\\/author\\\/innovationmadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Derived Query Methods of Spring Data JPA - InnovationM - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/","og_locale":"en_US","og_type":"article","og_title":"Derived Query Methods of Spring Data JPA - InnovationM - Blog","og_description":"Use Derived Query Methods of Spring Data JPA Repositories instead of writing your own queries. For the simple jpa queries, we generally use @Query annotation to make the queries, but the best practice says that we should use Derived Query Methods instead. Most developers hardly use one or two derived query methods like findById, and [&hellip;]","og_url":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/","og_site_name":"InnovationM - Blog","article_published_time":"2023-01-05T09:35:44+00:00","article_modified_time":"2023-01-05T09:40:50+00:00","og_image":[{"width":1689,"height":950,"url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png","type":"image\/png"}],"author":"InnovationM Admin","twitter_misc":{"Written by":"InnovationM Admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#article","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/"},"author":{"name":"InnovationM Admin","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"headline":"Derived Query Methods of Spring Data JPA","datePublished":"2023-01-05T09:35:44+00:00","dateModified":"2023-01-05T09:40:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/"},"wordCount":396,"commentCount":0,"image":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png","keywords":["blog","coding","methods query","query","technology"],"articleSection":["Java Application","JavaScript","Mobile"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/","url":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/","name":"Derived Query Methods of Spring Data JPA - InnovationM - Blog","isPartOf":{"@id":"https:\/\/www.innovationm.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#primaryimage"},"image":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#primaryimage"},"thumbnailUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png","datePublished":"2023-01-05T09:35:44+00:00","dateModified":"2023-01-05T09:40:50+00:00","author":{"@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed"},"breadcrumb":{"@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#primaryimage","url":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png","contentUrl":"https:\/\/www.innovationm.com\/blog\/wp-content\/uploads\/2023\/01\/Derived-Query-Methods.png","width":1689,"height":950},{"@type":"BreadcrumbList","@id":"https:\/\/www.innovationm.com\/blog\/derived-query-methods-of-spring-data-jpa\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.innovationm.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Derived Query Methods of Spring Data JPA"}]},{"@type":"WebSite","@id":"https:\/\/www.innovationm.com\/blog\/#website","url":"https:\/\/www.innovationm.com\/blog\/","name":"InnovationM - Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.innovationm.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.innovationm.com\/blog\/#\/schema\/person\/a831bf4602d69d1fa452e3de0c8862ed","name":"InnovationM Admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c99d9eece9dfbc82297cf34ddd58e9fe05bb52fe66c8f6bf6c0a45bfb6d7629?s=96&r=g","caption":"InnovationM Admin"},"sameAs":["http:\/\/www.innovationm.com\/"],"url":"https:\/\/www.innovationm.com\/blog\/author\/innovationmadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/7566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/comments?post=7566"}],"version-history":[{"count":0,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/posts\/7566\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media\/7567"}],"wp:attachment":[{"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/media?parent=7566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/categories?post=7566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.innovationm.com\/blog\/wp-json\/wp\/v2\/tags?post=7566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}