This allows you to add in the is_valid=1 to the queries bringing in the data for the mapping. It means though that your cache will not always represent what is in the database - changing is_valid may require the owning entity to be refreshed to have the changes reflected in the entity.
Unless the mapping is read-only though, you will need to map it somehow so it can be inserted into when entities are added to the collection. I usually recommend the Mapping_a_Join_Table_with_Additional_Columns approach because it reflects what is in the database, and allows the application to decide what to display. The entity can transparently filter results to the app with say a getValidEntities method, and allows for queries using the is_valid field if required in the future.