title: Grails validator doesn't detect violation
body: <p>Given a simple domain class, with a start hour and end hour, where the end hour should always be a greater value than start hour:</p>
  
  <pre><code>    class Daypart {
           ...
           Integer startHour
           Integer endHour
  
           static constraints = {
               ...
  
               startHour inList: (0..23)
               endHour  inList: (0..23), validator: { val, obj -&gt;
                   return (val &gt; obj.startHour)
               } 
            }
      }
  </code></pre>
  
  <p>When using 20 for start hour and 4 for end hour, validation should fail. On a brand new instance that calls the save() action, validation works as expected. </p>
  
  <p>When editing an existing instance and calling update(), validation rules are ignored, and .validate() returns true, even with setting start hour to -32 (the property with a simple constraint, not even a custom validation routine.) I've made sure to .clearErrors() before calling .validate() in the update block to no avail. Any ideas on what's going on here?</p>
  
  <h1>Edit: Adding update block</h1>
  
  <pre><code>    def update(Daypart dc) {
  
        dc.clearErrors()
        dc.validate()
        println ("Got errors? ${dc.hasErrors()}")
  
        try {
  
            if (dc.hasErrors()) {
                flash.error ="Invalid parameters."
                redirect resource: "campaign/daypart", action: "edit", id: dc.id, campaignId: dc.campaign.id
                return
            }
  
            dc.save(flush: true)
            flash.success = "Updated campaign ${dc.campaign.id}."
            redirect(controller: 'campaign', action: 'index')
  
        }
  
        catch (DaypartException de) {
            flash.message = de.message
            redirect resource: "campaign/daypart", action: "edit", id: de.daypart.id, campaignId: de.daypart.campaign.id
        }
    }
  </code></pre>
  
  <p>}</p>