0

我编写了一个扩展 Spring.Net 的 AbstractTransactionalDbProviderSpringContextTests 类的测试用例,并尝试做这样的事情。

Step.1 MyHibernateDao.Find(id)
Step.2 Use SqlConnection API to insert some record into database.

step.1 或 step.2 都可以成功运行,但如果我将它们放在一起,step.2 将永远挂起(直到超时。)

如果我添加以下语句:

Step.1 MyHibernateDao.Find(id) //My Find method does not have [Transaction] annotation.
SessionFactory.GetCurrentSession().Flush()
SessionFactory.GetCurrentSession().Close()
Step.2 Use SqlConnection API to insert some record into database.

step.1 和 step.2 都可以成功运行,当然拆卸会失败,因为会话已经关闭。

我想知道为什么测试在第 2 步挂起?没有理由一个连接需要等待另一个连接返回,或者需要等待一个表锁或什么,它只是简单地读取。

我在这里很困惑,有什么想法吗?

提前致谢。

4

1 回答 1

0

您使用的是 Spring.NET 的事务管理还是 NHibernate 的?您可能需要检查会话工厂配置。

于 2011-07-07T16:39:35.817 回答