我相信你最终做要回调到当前事务的边界内运行,你只是希望它运行后休眠已经做了的事情,就像休眠Envers工作。
要做到这一点,你基本上需要注册一个事件动作队列回调如下所示:
session.getActionQueue().registerProcess(
new BeforeTransactionCompletionProcess() {
@Override
public void doBeforeTransactionCompletion(SessionImplementor session) {
// do whatever you want with the session here.
}
}
);
如果你最终必须运行代码外交易,你可以做同样的事情:
session.getActionQueue().registerProcess(
new AfterTransactionCompletionProcess() {
@Override
public void doAfterTransactionCompletion(boolean success, SharedSessionContractImplementor session) {
// do whatever you want with the session here.
}
}
);
这应该让你去任何一种方式。