【问题标题】:Oracle Flashback Query with Hibernate使用 Hibernate 的 Oracle 闪回查询
【发布时间】:2011-03-23 18:49:16
【问题描述】:

我必须在我的 Java 应用程序中使用 Oracle 闪回查询。我们正在使用 Hibernate 进行数据持久性,所以我想知道是否有办法在 Hibernate 中启用此功能。
当然,我可以使用 Hibernate 的 SQL 查询,但这不是我的想法。

【问题讨论】:

  • 你打算如何使用它?您是否希望简单地调用 DBMS_FLASHBACK.ENABLE_AT_TIME ?
  • 嗯,我不知道数据库配置,我只知道启用了这个功能,我必须让java app使用它。到目前为止,我已经使用了普通的 SQL 查询。工作量很大,但如果成功的话。

标签: java oracle hibernate


【解决方案1】:

到目前为止,Hibernate 不以本机方式支持此功能(据我所知),但是通过提到的ENABLE_AT_TIME Oracle calll,您实际上可以实现您想要的。 但要小心!这将为整个会话启用“时间机器”(在连接池的情况下可能会导致有趣的行为)。以下是正确用法的完整示例:

EXECUTE dbms_flashback.enable_at_time('30-AUG-2000');
--your queries go here
SELECT salary FROM emp where name = 'Joe'
EXECUTE dbms_flashback.disable;

Eclipselinksupports ("history.as-of")as of timestamp 解决方案,但您必须将其设置为 hint。例如:

//...
query.setHint("eclipselink.AS_OF", "2012/10/15 11:21:18.2");
//...

或者你可以通过注解来实现:

//...
@QueryHint(name=QueryHints.AS_OF, value="2012/10/15 11:21:18.2");
//...

如果您坚持使用 Hibernate,您应该查看带有 @Audit 注释的合并审计。 https://docs.jboss.org/envers/docs/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 2020-02-23
    • 2013-08-23
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2016-04-05
    相关资源
    最近更新 更多