This seems more to be a jdbc-driver issue than a hiberante issue.
Hibernate just calls following method
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Statement.html#getGeneratedKeys()which is allowed, and it's this method which throws the exception.
Suggestions:
1. Check if you use latest versions of MS SQL driver.
2. Your SQLServerDriver it not used directly, it is wrapped by a class in package com.ibm.ws.rsadapter.jdbc
Not knowing what this wrapper does, I would suggest make a try with using MS SQL driver directly without wrapper.
3. Try jtds driver instead to SQLServerDriver
4. Last but not least: Not use native IdentityGenerator, use another IdentityGenerator.
Native IdentityGenerator (= let the database assign the new key) has some serious disadvantages:
One might the problem you report here.
Another disadvantage regards performance:
native IdentityGenerator produces a database-hit whenever you persist a new object
(with other strategies the insert operation is deferred until flush/commit),
thus batch-inserting becomes impossible.
Inserts with IdentityGenerator (strategy = GenerationType.TABLE) are much faster.