If I understand you correctly, you want the update in transaction t1 to be rolled back if an error is generated in the following section of code:
Code:
tkper.setTKId(tk);
session.update(tkper);
session.flush();
t2.commit();
Since you have already successfully committed the transaction t1 before you even execute the code above, then it is too late to try to rollback on transaction t1 if there is an error in transaction t2.
In your example, you'd want to move the t1.commit(); call to after the t2.commit() call. However, you could then get the situtation where the commit to t2 succeeds and the commit to t1 fails. If you want both transactions to succeed or both to fail, then what you really need is a two-phase commit.