【问题标题】:Hibernate version?休眠版?
【发布时间】:2010-08-13 20:57:27
【问题描述】:

我正在使用JBoss Embedded beta3.SP10 版本,我面临一个应该在某些 Hibernate 版本中修复的持久性错误。可悲的是,我不知道我的 JBoss Embedded 中使用了哪个版本的 Hibernate,也找不到找到此信息的方法,其中捆绑的 hibernate-all.jar 不包含 org.hibernate.Version 类,也不包含清单。

如何在不使用org.hibernate.Version 的情况下找到当前加载的Hibernate 版本?

【问题讨论】:

  • 您的用例到底是什么?如果您有此需要,为什么不使用 Version 类?
  • Erm 我的 Hibernate 发行版没有这个类......它似乎是在不久的过去添加的。我的用例是一个我无法弄清楚的错误:请参阅forum.hibernate.org/viewtopic.php?f=1&t=1006411 这是因为我在 Tomcat 上使用嵌入式 JBoss,而这个发行版带有我不知道的 Hibernate 版本。较新的版本可能会解决这个问题(我发布了一个错误报告的链接)。

标签: java hibernate orm


【解决方案1】:

试试这个,

System.out.println(org.hibernate.Version.getVersionString());

found here

【讨论】:

    【解决方案2】:

    另一种获取版本的方法。

    System.out.println(org.hibernate.cfg.Environment.VERSION)
    

    这适用于旧版本的 Hibernate。例如3.3.1.GA

    【讨论】:

    • 是的,对于较早的版本,即 3.2.x,只有这样才能工作。在早期版本中,版本常量不会出现在 annotations.common 中。
    【解决方案3】:

    这个简单的Java代码是获取Hibernate版本的。

    package com.test;
    public class TestBean {
    public static void main(String[] args) {
        try {
            String hibernateVersion = org.hibernate.annotations.common.Version.VERSION;
            System.out.println("Hibernate Version: "+ hibernateVersion);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    }
    

    输出: Hibernate Version: 3.1.0.GA

    【讨论】:

      【解决方案4】:

      确实,似乎很难找到所使用的 Hibernate 模块的确切版本。一些建议:

      1. 检查您的 Hibernate JAR 中是否有带有版本的 META-INF/MANIFEST.MF 看起来 JBoss 人员此时正在使用 Ant,而 Manifest 没有提供版本.

      2. 挖掘JBoss Embedded SVN 以了解他们到底在做什么。

      3. 尝试使用JBoss embedded beta3.SP12(可以从 Maven 存储库获取)。

      4. 尝试将 hibernate-all 替换为包含 Hibernate EM 3.4.0.GA 的包。

      我会尝试选项 3 和 4。

      【讨论】:

      • 我以前试过这个。那里没有版本。我刚刚找到forum.hibernate.org/viewtopic.php?f=1&t=1003161&start=0,但我不知道把那个参数放在哪里。我尝试在 web.xml 中作为上下文参数,但它不起作用。 BTW JBoss 嵌入式是 beta3.SP10,2009-09-09 的最新版本。
      【解决方案5】:

      我更喜欢@Shell 的方式,而不是@pudaykiran 的方式。实际上,我发现这两种方式在我的情况下得到不同的输入。 正如@pudaykiran 所说,我得到了:

      3.2.0 最终版

      正如@Shell 所说:

      3.5.4 决赛

      我猜 3.5.4 最终版本使用了之前版本的 org.hibernate.annotations.common。如果我错了,请纠正我。

      【讨论】:

      • FWIW,这些不同的命令也为我返回了不同的结果:System.out.println(org.hibernate.annotations.common.Version.VERSION) 返回了13.2.0.Final,而System.out.println(org.hibernate.Version.getVersionString()) 返回了3.6.10.Final。较新的 (5.x) 版本仅适用于第二个命令;第一个导致此异常:No such property: VERSION for class: org.hibernate.annotations.common.Version
      • 那我猜第一个现在不行了。
      猜你喜欢
      • 2013-02-14
      • 2021-05-05
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2011-12-16
      • 2020-06-18
      • 2015-02-14
      相关资源
      最近更新 更多