【问题标题】:Letting Hibernate know of hidden entity relationships让 Hibernate 知道隐藏的实体关系
【发布时间】:2011-03-11 13:17:13
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java hibernate


    【解决方案1】:

    最直接的方法是使用@Synchronize

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

    您可以尝试覆盖该方法并将 Hibernate 配置为使用带有 @Persister 注释的自定义持久性。在调试器中检查 SessionImpl.autoFlushIfRequired() 以了解这些空格的外观(我猜它们是依赖表的名称)。

    【讨论】:

    • 您的回答导致将Synchronize 符号添加到V 实体。该实体应使用@Synchronize(T_E) 进行注释,其中T_E 是E 映射的表。有点间接,但它有效。您可能希望将此信息包含在您的答案中。为了完整性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多