Do you need to generate a unique ID from DB?. We use another solution with SSB with static block. This is very fast method because the SSB should be pooled.
An other way is to generate ID from timestamp (System.getCurrentTimeMillis()) or generate UUID format from ip and time. This is the best way in case of clusters.
What about the transaction isolation setting of the database itself? I set it to Read_Committed (not an exact term) in the my.ini file. and then set the same value in the mysql-ds.xml file. I have attached my files, and I hope it helps.