The row with null is not persisted, if you check https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/persister/collection/AbstractCollectionPersister.java#L1280 the collection element is added to the PreparedStatement only if
collection.entryExists( entry, i ) == true
but
PersistenMap#entryExists
implementation is
public boolean entryExists(Object entry, int i) { return ( (Map.Entry) entry ).getValue() != null; }
returning false in case the map value is null.