private <V> V runInTransaction( Callable<V> operation ) {
// Start a transaction ...
Transactions txns = sessionContext.getTransactions();
try {
Transaction txn = txns.begin();
try {
V result = operation.call();
txn.commit();
return result;
} catch (Exception e) {