This is very odd, it seems to be an issue with attribute change tracking,
and a read-only many-to-many mapping. I think this is causing the address
to not be persisted. If you call persist on the Address, does it commit
correctly?
If so, it would seem to be a bug, please log a bug for the issue, include
the example code and a log trace on finest.
The workaround for now is either your size call, calling persist on the
Address, or using the @ChangeTracking annotation to use deferred change
tracking for Person class.