Version Differences for Error storing object in database: Version X is not up to date Y for Z

(Initial Creation)
(Added in partial database table & Cause)
Line 9:
  <pre>com.urbancode.anthill3.domain.persistent.PersistenceException:    <pre>com.urbancode.anthill3.domain.persistent.PersistenceException: 
  com.urbancode.anthill3.domain.lock.LockableResource: Persistent IDs cannot be changed once set</pre>    com.urbancode.anthill3.domain.lock.LockableResource: Persistent IDs cannot be changed once set</pre> 
       
    + = Cause =  
       
    + There are internal database tables that keep track of every record being wrote to it. Every time a change is made to a property/lock/etc., that version is incremented. When working in parallel, it is possible that both objects will try to update the version number to the next highest amount, but one object may have already succeeded in the update. Therefore, the next object will fail since the version number is already at the version it was going to assign. Some of this can be found within Anthill's '''HI_LO_SEQ''' table:  
       
    + <pre>SEQ_NAME HI_VAL  
    + ------------------------------ ------  
    + ...  
    + .  
    + .  
    + BUILD_LIFE 372  
    + BUILD_LIFE_DEPENDENCY_PLAN 372  
    + .  
    + .  
    + .  
    + PROJECT 160  
    + PROJECT_ENV_PROP 1  
    + PROPERTY_VALUE_GROUP 16  
    + .  
    + .  
    + .  
    + WORKFLOW_CASE 720  
    + .  
    + .  
    + ...  
    + </pre>  
       
    + If the updated version is less than what the HI_VAL is already set to in the database, it is discarded and an exception is thrown.