2010-08-13 110 views
9

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

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

+0

你的用例究竟是什么?如果你有这个需求,为什么不使用'Version'类? – 2010-08-13 22:19:23

+0

Erm我的Hibernate发行版没有这个类......它似乎已经加入了更近的过去。 我使用的用例是一个我找不到的bug:请参阅http://forum.hibernate.org/viewtopic.php?f = 1&t = 1006411 这是因为我在Tomcat上使用了嵌入式JBoss,而这个发行版带有我不知道的Hibernate版本。机会是一个较新的版本可以解决这个问题(我发布了一个错误报告的链接)。 – Kawu 2010-08-14 00:10:12

回答

21

试试这个,

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

found here

0

事实上,似乎很难找到使用何种精确版本的Hibernate模块。几点建议:

  1. 检查你的Hibernate JAR已经与它的版本 META-INF/MANIFEST.MF它看起来像JBoss人在这个时候使用Ant和Manifest不提供版本。

  2. 挖掘JBoss Embedded SVN找出他们正在做的事情。

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

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

我会给选项3和4一个尝试。

+0

我以前试过。没有版本。我刚刚找到了https://forum.hibernate.org/viewtopic.php?f=1&t=1003161&start=0,但我不知道该把参数放在哪里。我试图在web.xml中作为上下文参数,但它不起作用。顺便说一句,JBoss嵌入式是beta3.SP10,是2009-09-09的最新版本。 – Kawu 2010-08-14 02:02:44

+0

@Kawu Logging使用'Version'类记录版本... – 2010-08-14 12:17:45

6

这个简单的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

0

我喜欢@Shell的方式,而不是@pudaykiran的。其实,我发现这两种方式在我的情况下得到不同的意见。 至于说@pudaykiran,我得到:

3.2.0最终

正如@Shell说:

3.5.4最终

我猜3.5.4正式版使用org.hibernate.annotations.common的以前的版本。纠正我,如果我错了。

4

另一种获取版本的方法。

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

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

+0

是的,对于早期的版本,即3.2.x,只有这样才能工作。在较早版本中,版本常量不会出现在annotations.common中。 – peterong 2018-02-01 07:09:05