|
1
8
我不太熟悉nhibernate源代码,但是来自2.1.2.ga版本中isession实现的这个方法可以回答以下问题:
我认为这意味着自动刷新只能保证事务内部的一致性,这是有意义的。尝试使用事务重写测试,我很好奇这是否能解决问题。 |
|
|
2
2
如果您考虑一下,示例中的查询必须始终转到数据库。会话不是数据库中所有记录的完整缓存。所以那里 能够 是磁盘上值为20的其他实体。由于您没有commit()事务或flush(),会话nh无法知道您要查询哪个“视图”(db session)。 似乎“最佳实践”是在显式事务中执行所有操作(获取和设置):
见 here 为了一堆细节。 |
|
|
3
0
管理和调整休眠是一种艺术形式。 为什么要将初始值设置为20,保存,然后将其更改为30? 实际上,如果您要修改会话,然后查询会话,那么您可能需要在这些操作之间显式刷新。您可能会受到轻微的性能影响(毕竟,您不会让Hibernate优化会话刷新),但如果出现问题,您可以重新访问。 您引用了“session.find方法永远不会返回过时的数据”。我将修改您的代码以使用find而不是createQuery来查看它是否有效。 |
|
|
Nico Pizzo · 子查询上的nhibernate联接 8 年前 |
|
|
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 8 年前 |
|
|
Stu · 具有特定类型的字符串外键的NHibernate映射 8 年前 |
|
|
Zout · 为Hibernate的HiLo算法管理的列生成ID 8 年前 |