anchor.diff:      sb.append( EQUALS );
       sb.append( prepareSQL( value.get<%= object_type.primary_key.java.field_name %>() ) );
       return sb.toString();
  -  }
  +<% end %>  }
   
     protected String getUpdateSql( final iris.beans.AbstractBean persistent )
     {
   <%
  -  mutable_attributes = object_type.attributes.select {|a| !a.primary_key? && !a.immutable? && a.persistent? && !a.iris.runtime_managed?}
  +  if object_type.abstract?
  +%>    throw new UnsupportedOperationException( "Update of abstract object type <%= object_type.name %> is not supported" );
  +<%
  +  else
  +    mutable_attributes = object_type.attributes.select {|a| !a.primary_key? && !a.immutable? && a.persistent? && !a.iris.runtime_managed?}
   if mutable_attributes.size == 0
   %>    return null;
   <% else %>
  
positive.code:     sb.append( EQUALS );
      sb.append( prepareSQL( value.get<%= object_type.primary_key.java.field_name %>() ) );
      return sb.toString();
  <% end %>  }
  
    protected String getInsertSql( final iris.beans.AbstractBean persistent )
    {
      <%= object_type.schema.java.package %>.<%= object_type.schema.name %>Validator.validate( persistent );
      final <%= fqn %> value = (<%= fqn %>)persistent;
      final iris.busobj.BusObjEntry entry = iris.busobj.BusObjEntry.getEntry( value );
      final StringBuffer sb = new StringBuffer();
      sb.append( INSERT_INTO );
      sb.append( getTableName() );
      sb.append( " (" );
      sb.append( quote( iris.busobj.BusObjEntry.BATCH_ID ) );
      sb.append( COMMA );
  
negative.code: 
      final StringBuilder sb = new StringBuilder();
      sb.append( UPDATE );
      sb.append( <%= fqn %>.TABLE_NAME );
      sb.append( SET );
      sb.append( quote( iris.busobj.BusObjEntry.BATCH_ID ) );
      sb.append( EQUALS );
  