{"id":6894,"date":"2012-09-01T13:14:58","date_gmt":"2012-09-01T07:44:58","guid":{"rendered":"http:\/\/www.tothenew.com\/blog\/?p=6894"},"modified":"2016-12-19T15:06:20","modified_gmt":"2016-12-19T09:36:20","slug":"6894","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/6894\/","title":{"rendered":"Optimistic locking strategy in Grails"},"content":{"rendered":"<p>In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &#8220;version&#8221;. This property can be used for optimistic locking. Although you can remove this property<br \/>\n[java]<br \/>\nstatic mapping ={<br \/>\n      version false<br \/>\n}<br \/>\n[\/java]<br \/>\nbut its not a very good practice. The initial value of version field is 0 and Grails automatically increments it by 1 every time the object is updated. This property helps to identify whether the currently updating object has already been updated or not. <\/p>\n<p>&nbsp;<\/p>\n<p>Suppose we have a Book domain and its corresponding BookController the default Grails scaffold update action has code something like as follows<br \/>\n[java]<br \/>\nif (version != null) {<br \/>\n            if (book.version &gt; version) {<br \/>\n                book.errors.rejectValue(&quot;version&quot;, &quot;default.optimistic.locking.failure&quot;,<br \/>\n                        [message(code: &#8216;book.label&#8217;, default: &#8216;Book&#8217;)] as Object[],<br \/>\n                        &quot;Another user has updated this Book while you were editing&quot;)<br \/>\n                render(view: &quot;edit&quot;, model: [book: book])<br \/>\n                return<br \/>\n            }<br \/>\n        }<br \/>\n[\/java]<br \/>\nAs we can see it checks the current version of the object with the version got from request. If the current version of object is greater, it injects the error into the object and object is not saved.<\/p>\n<p>&nbsp;<\/p>\n<p>Hope it helps<br \/>\n<a href=\"http:\/\/www.tothenew.com\/blog\/author\/uday\/\">Uday Pratap Singh<\/a><br \/>\n<a href=\"mailto:uday@intelligrape.com\">uday@intelligrape.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &#8220;version&#8221;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":1,"footnotes":""},"categories":[7],"tags":[941,913,917,940,914],"class_list":["post-6894","post","type-post","status-publish","format-standard","hentry","category-grails","tag-grails-domain-version","tag-grails-locking","tag-optimistic-locking-in-grails","tag-remove-grails-version","tag-version-field-in-grails"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &quot;version&quot;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Uday Pratap Singh\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.tothenew.com\/blog\/6894\/\" \/>\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=\"Optimistic locking strategy in Grails | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &quot;version&quot;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.tothenew.com\/blog\/6894\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.tothenew.com\/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=\"Optimistic locking strategy in Grails | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &quot;version&quot;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.tothenew.com\/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\\\/6894\\\/#article\",\"name\":\"Optimistic locking strategy in Grails | TO THE NEW Blog\",\"headline\":\"Optimistic locking strategy in Grails\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2012-09-01T13:14:58+05:30\",\"dateModified\":\"2016-12-19T15:06:20+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#webpage\"},\"articleSection\":\"Grails, grails domain version, grails locking, optimistic locking in grails, remove grails version, version field in grails\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#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\\\/6894\\\/#listItem\",\"name\":\"Optimistic locking strategy in Grails\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#listItem\",\"position\":3,\"name\":\"Optimistic locking strategy in Grails\",\"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\\\/uday\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/\",\"name\":\"Uday Pratap Singh\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/d4c98503-ff55-4112-8fc2-e3c4fcc6fc3a_282-Uday-Pratap-Singh-PROFILEPICTURE.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Uday Pratap Singh\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/\",\"name\":\"Optimistic locking strategy in Grails | TO THE NEW Blog\",\"description\":\"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called \\\"version\\\". This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\\\/java] but its not a very good practice. The initial value of version\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/6894\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"datePublished\":\"2012-09-01T13:14:58+05:30\",\"dateModified\":\"2016-12-19T15:06:20+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":"Optimistic locking strategy in Grails | TO THE NEW Blog","description":"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called \"version\". This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version","canonical_url":"https:\/\/www.tothenew.com\/blog\/6894\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tothenew.com\/blog\/6894\/#article","name":"Optimistic locking strategy in Grails | TO THE NEW Blog","headline":"Optimistic locking strategy in Grails","author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/uday\/#author"},"publisher":{"@id":"https:\/\/www.tothenew.com\/blog\/#organization"},"datePublished":"2012-09-01T13:14:58+05:30","dateModified":"2016-12-19T15:06:20+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.tothenew.com\/blog\/6894\/#webpage"},"isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/6894\/#webpage"},"articleSection":"Grails, grails domain version, grails locking, optimistic locking in grails, remove grails version, version field in grails"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tothenew.com\/blog\/6894\/#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\/6894\/#listItem","name":"Optimistic locking strategy in Grails"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.tothenew.com\/blog\/6894\/#listItem","position":3,"name":"Optimistic locking strategy in Grails","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\/uday\/#author","url":"https:\/\/www.tothenew.com\/blog\/author\/uday\/","name":"Uday Pratap Singh","image":{"@type":"ImageObject","@id":"https:\/\/www.tothenew.com\/blog\/6894\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/d4c98503-ff55-4112-8fc2-e3c4fcc6fc3a_282-Uday-Pratap-Singh-PROFILEPICTURE.jpeg","width":96,"height":96,"caption":"Uday Pratap Singh"}},{"@type":"WebPage","@id":"https:\/\/www.tothenew.com\/blog\/6894\/#webpage","url":"https:\/\/www.tothenew.com\/blog\/6894\/","name":"Optimistic locking strategy in Grails | TO THE NEW Blog","description":"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called \"version\". This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.tothenew.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.tothenew.com\/blog\/6894\/#breadcrumblist"},"author":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/uday\/#author"},"creator":{"@id":"https:\/\/www.tothenew.com\/blog\/author\/uday\/#author"},"datePublished":"2012-09-01T13:14:58+05:30","dateModified":"2016-12-19T15:06:20+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"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Optimistic locking strategy in Grails | TO THE NEW Blog","og:description":"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &quot;version&quot;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version","og:url":"https:\/\/www.tothenew.com\/blog\/6894\/","og:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Optimistic locking strategy in Grails | TO THE NEW Blog","twitter:description":"In Grails optimistic locking is achieved by version property . The Grails Domain classes has a built in property called &quot;version&quot;. This property can be used for optimistic locking. Although you can remove this property [java] static mapping ={ version false } [\/java] but its not a very good practice. The initial value of version","twitter:image":"https:\/\/www.tothenew.com\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"6894","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 07:08:00","updated":"2024-02-29 10:21:26","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:\/\/www.tothenew.com\/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:\/\/www.tothenew.com\/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\tOptimistic locking strategy in Grails\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.tothenew.com\/blog"},{"label":"Grails","link":"https:\/\/www.tothenew.com\/blog\/category\/grails\/"},{"label":"Optimistic locking strategy in Grails","link":"https:\/\/www.tothenew.com\/blog\/6894\/"}],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/6894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=6894"}],"version-history":[{"count":0,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/6894\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=6894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=6894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=6894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}