假设我有一个用Hibernate(E
)映射的实体和一个查询实体表的视图,也用Hibernate(V
)映射。
如果我持有E
的实例,然后在同一个会话中查询V
,那么hibernate不会刷新持久性队列,因为它不知道这两个实体是相关的,因此V
上的查询结果不正确。
我目前正在手动刷新会话,但我发现这是一个令人不满意的解决方案,因为它假定对映射的方式有太多了解。
还有哪些其他选项可以确保对视图的查询是否正确?
答案 0 :(得分:2)
最直接的方法是使用@Synchronize
。
此行为由EntityPersister.getQuerySpaces()
控制。
您可以尝试覆盖该方法并将Hibernate配置为使用带有@Persister
注释的自定义容器。检查调试器中的SessionImpl.autoFlushIfRequired()
以找出空格应该是什么样的(我猜它们是依赖表的名称)。