Your issue is the data source, you show it over association.
You create an object in memory, and then navigate away, without cleaning up the object created in memory. Which will automatically be cleaned up by the garbage collection. but housekeeping is sometimes delayed ;-)
Secondly, by using the by association datasource, you show associated objects sourced from memory. And thus new not committed objects are displayed.
You should use database + over association instead. This will show only committed objects (records) in the list.
I suspect you are creating the object and committing the object first used, but not committing it after you have changedit. You are then trying to access the object using a retrieve from database so the uncommitted changes are being lost, and the original blank object is being returned. The solution would be to either not commit initially, so if you navigate away the changes are lost, or to commit after you have made the changes so they are stored.