As long as all the inserts/updates happen in the transaction, the audit logs should be written at the end of it. So when the transaction is commited, audit entries for all the operations that happended get written. Before that, it is not possible to determine what the audit entry should be (if you change and flush the same entity several times).
Do you see some audit entries missing?
Yes, Only the last entry is being audited !! I can see the listener being called for every insert/update but audit tables are updated only for the last update.