So, what happens in Glorp.
Objects are registered with the unit of work. When they are, Glorp shallow copies them into a Map.
When you commit, it looks for connected objects. So it ought to find the change to that inst var and register the new address.
It takes all the objects it knows about and writes a RowMap. Then it takes the shallow copies and generates a RowMap for them, representing the old state.
Then it looks for differences.
Then it generates SQL for those differences, using an insert if the row wasn't there before, and an update if it was.
So something could be weird with the hashing (the intermittent nature suggests maybe that, but it's a wild guess). But you could try to see if it's happening in terms of the objects, in terms of generating the row map, or in terms of the differences.
There are debugRead and debugWrite properties you can set on the mapping to get you a debugger when it's happening. And I think there might be some logging you could enable, but it's been a while. Or you could add some.