I have a nested call hierarchy with several classes annoted with Spring.NET [Transaction]. Somewhere I throw a validation exception. The transaction gets rolled back in the deepest level of the call hierarchy. All other methods throw a "could not rollback hibernate transaction" because the AOP nterceptor wants to roll back an already rolled back transaction (my guess).
Implementing HibernateTxScopeTransactionManager helps:
public class MBTxScopeTransactionManager : Spring.Data.NHibernate.HibernateTxScopeTransactionManager
protected override void DoRollback(Spring.Transaction.Support.DefaultTransactionStatus status)