让Hibernate知道隐藏的实体关系

时间:2011-03-11 13:17:13

标签: java hibernate

假设我有一个用Hibernate(E)映射的实体和一个查询实体表的视图,也用Hibernate(V)映射。

如果我持有E的实例,然后在同一个会话中查询V,那么hibernate不会刷新持久性队列,因为它不知道这两个实体是相关的,因此V上的查询结果不正确。

我目前正在手动刷新会话,但我发现这是一个令人不满意的解决方案,因为它假定对映射的方式有太多了解。

还有哪些其他选项可以确保对视图的查询是否正确?

1 个答案:

答案 0 :(得分:2)

最直接的方法是使用@Synchronize

此行为由EntityPersister.getQuerySpaces()控制。

您可以尝试覆盖该方法并将Hibernate配置为使用带有@Persister注释的自定义容器。检查调试器中的SessionImpl.autoFlushIfRequired()以找出空格应该是什么样的(我猜它们是依赖表的名称)。