equals grails domain class « Intelligrape Groovy & Grails Blogs

Posts Tagged ‘ equals grails domain class ’

Groovy annotations for ToString and EqualsAndHashCode

Posted by Uday Pratap Singh on January 29th, 2012

As I am a lazy programmer most of the time I dont implement toString and equals methods on my grails domain classes. I would like to say thanks to Groovy for helping me out and giving me a ready made recipe for this. Now I just need to annotate my class with ToString and EqualAndHashCode annotation it adds appropriate implementation of these methods for me. Now My domain class looks something like this.

@ToString(includeNames = true, includeFields = true, excludes = 'dateCreated,lastUpdated,metaClass')
class Item {
    String name
    Float price
    boolean active = true
    Date dateCreated
    Date lastUpdated

Before adding this annotation my domain class toString looks like this

Item item = new Item(name: "Chips", active: false, price: 15)
println "To String output -: " + item //To String output -: com.intelligrape.myapp.Item : null

Now I get the following output for Item object toString

Item item = new Item(name: "Chips", active: false, price: 15)
println "To String output -: " + item //To String output -: com.intelligrape.myapp.Item(name:Chips, price:15.0, active:false)

To get this annotation on all my domain classed I updated the template of grails domain classes so that whenever I do create-domain-class it give me the annotated domain classes

import groovy.transform.EqualsAndHashCode
import groovy.transform.ToString

@ToString(includeNames = true, includeFields = true, excludes = 'dateCreated,lastUpdated,metaClass')
class @artifact.name@ {

    Date dateCreated
    Date lastUpdated

Hope it helps

## Uday Pratap Singh ##

  • spacer
Tags: equals grails domain class, grails domain class template, groovy annotations, groovy equals, groovy hasCode, groovy toString, hashcode grails domain class, tostring grails domain class
Posted in Design Pattern, Grails, Groovy
gipoco.com is neither affiliated with the authors of this page nor responsible for its contents. This is a safe-cache copy of the original web site.