Vaadin 7 Grid unbuffered not working as documented, take 2

Yes, this is a virtual repeat of my post
here
. I thought I would reword it to see if maybe we could come at the question from a different direction.

For some reason, I have a Grid that works fine visually and at the data container level when buffered mode is enabled, but when I turn off buffered mode it does the following:

  1. Loses my changes visually when it goes to the next line ( I changed “400” to “400000”, and it changes back to “400” when I leave the line ).
  2. Does not propagate my changes to the container backend for later updating of our database

Note that other Grids in my application, when I turn off buffered mode, do not have the above visual problem ( 400 to 400000 to 400 ). I suspect it does not have the container problem either, but I am not 100% sure. People have suggested a problem with “equals”, but I have this problem even when there is only one line, even with equals defined ( see below ). Maybe you can see something I do not with my equals and/or hashCode methods.

If you have answer this question before for me, thanks, and can you be more specific on what I am doing wrong. I am at a total loss. Even a hint on how to prove or disprove what you are thinking would be a huge help. Thanks.

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());
        result = prime * result + ((getFacilityId() == null) ? 0 : getFacilityId().hashCode());
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof WrappedReplenishmentOrder)) {
            return false;
        }
        
        WrappedReplenishmentOrder other = (WrappedReplenishmentOrder) obj;
        if (getOrderId() == null) {
            if (other.getOrderId() != null) {
                return false;
            }
        } else if (!getOrderId().equals(other.getOrderId())) {
            return false;
        }
        
        if (getFacilityId() == null) {
            if (other.getFacilityId() != null) {
                return false;
            }
        } else if (!getFacilityId().equals(other.getFacilityId())) {
            return false;
        }
        
        return true;
    }