0

首先,对不起,如果我的英语这么差,我是使用hibernate的新手,所以有一些问题想问所有的前辈。这是条件:我使用 zk 作为视图,在一个视图中,我有一个工具栏,其中包含(添加)、(保存)、(取消)按钮。所以我想要的是当用户 klik(添加)hibernate 将启动一个新事务,然后用户在该用户 klik(保存)之后插入一些数据。在这个(保存)按钮事件中,hibernate 将调用 commit 将数据插入数据库。

问题是当用户单击保存时,在 1 次跟踪程序流程后出现错误消息“提交无效,没有活动事务”,我发现当用户单击(保存)按钮时,我之前启动的事务不再处于活动状态。

##我想问的是为什么事务在我还没有提交的时候处于非活动状态?##

我正在使用带有 hibernate 和 hibernate.current_session_context_class = Thread 的 spring

谢谢您的帮助

4

1 回答 1

1

不看代码就无法判断。但是你想做的是一个非常糟糕的主意。不要这样做。事务应尽可能短。让事务打开很长时间(您的用户可能需要在“添加”和“保存”点击之间等待一段时间)使连接保持打开状态并且其他并发用户无法使用,无论如何都可能导致超时,并且可能会锁定某些数据库行或表,使所有其他用户等待您的事务完成。

只有当用户单击“保存”按钮时,才应在数据库中插入和提交。Add按钮所做的修改不应保存在数据库中,而是存储在内存中,直到用户单击Save

于 2011-10-11T08:44:07.977 回答