Hi.
I think this might be another issue related to hibernate's connection release mode. See section 11.5,
http://www.hibernate.org/hib_docs/v3/reference/en/html/transactions.html. If hibernate is releasing and reacquiring Connections between transactions, then you'll often end up with transactions that have not had the benefit of your customized authorization and initialization.
You should be able to resolve this easily by ensuring that all Connections acqured by the pool are properly initialized, rather than initializing Sessions when they are associated with Threads. Please try using the latest version of c3p0-0.9.1, and define a ConnectionCustomizer (see the docs) so that your initialization occurs at Connection acquisition rather than at Session acquisition.
If this is too disruptive, you can just change hibernate's Connection release mode to "ON_CLOSE", which will lead to more intuitive behavior, but implies a heavier footprint in terms of resource utilization, as all open Sessions will hold an open Connection even when nothing much is being done with them.
Good luck!
Steve