title: Proper Implementation of clone() For Domain Classes to duplicate a Grails domain instance
body: <p>I have several domain classes for which the user interface includes
  a "duplicate" command. As part of the implementation of those commands,
  I have implemented <code>clone()</code> methods in the corresponding domain classes.</p>
  
  <p>I have been trying to correct my bad habit of improperly implementing
  clone() (in general) based on use of "<code>new</code>" rather than <code>"super.clone(),"</code>
  so as soon as I thought about doing the same for my Grails domain
  classes, I wondered how using <code>super.clone()</code> to obtain a clone might
  interact with <code>GORM</code> / Hibernate persistence. In particular, I was
  wondering about the proper way to handle the implicit "id" property. If
  I simply <code>super.clone()</code>, do nothing further and later try to <code>save()</code> the
  cloned instance, will it work properly (creating a new persistence
  entry?) or will some kind of error or silent failure result?</p>
  
  <p>What is the proper or preferred way to duplicate a Grails domain
  instance?</p>