我正在使用JBoss Embedded版本beta3.SP10,我正面临一个应该在某些Hibernate版本中修复的持久性错误。可悲的是,我不知道我的JBoss Embedded中使用了什么版本的Hibernate,并且找不到找到这些信息的方法,其中捆绑的hibernate-all.jar
不包含org.hibernate.Version
类,也不包含MANIFEST。休眠版本?
如何在不使用org.hibernate.Version
的情况下找到当前加载的休眠版本?
我正在使用JBoss Embedded版本beta3.SP10,我正面临一个应该在某些Hibernate版本中修复的持久性错误。可悲的是,我不知道我的JBoss Embedded中使用了什么版本的Hibernate,并且找不到找到这些信息的方法,其中捆绑的hibernate-all.jar
不包含org.hibernate.Version
类,也不包含MANIFEST。休眠版本?
如何在不使用org.hibernate.Version
的情况下找到当前加载的休眠版本?
事实上,似乎很难找到使用何种精确版本的Hibernate模块。几点建议:
检查你的Hibernate JAR已经与它的版本
它看起来像JBoss人在这个时候使用Ant和Manifest不提供版本。META-INF/MANIFEST.MF
。
挖掘JBoss Embedded SVN找出他们正在做的事情。
尝试使用JBoss embedded beta3.SP12(您可以从Maven存储库中获取)。
尝试用包含Hibernate EM 3.4.0.GA的包替换hibernate-all。
我会给选项3和4一个尝试。
我以前试过。没有版本。我刚刚找到了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
@Kawu Logging使用'Version'类记录版本... – 2010-08-14 12:17:45
这个简单的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
我喜欢@Shell的方式,而不是@pudaykiran的。其实,我发现这两种方式在我的情况下得到不同的意见。 至于说@pudaykiran,我得到:
3.2.0最终
正如@Shell说:
3.5.4最终
我猜3.5.4正式版使用org.hibernate.annotations.common
的以前的版本。纠正我,如果我错了。
另一种获取版本的方法。
System.out.println(org.hibernate.cfg.Environment.VERSION)
这是用于旧版本的Hibernate。例如3.3.1.GA
是的,对于早期的版本,即3.2.x,只有这样才能工作。在较早版本中,版本常量不会出现在annotations.common中。 – peterong 2018-02-01 07:09:05
你的用例究竟是什么?如果你有这个需求,为什么不使用'Version'类? – 2010-08-13 22:19:23
Erm我的Hibernate发行版没有这个类......它似乎已经加入了更近的过去。 我使用的用例是一个我找不到的bug:请参阅http://forum.hibernate.org/viewtopic.php?f = 1&t = 1006411 这是因为我在Tomcat上使用了嵌入式JBoss,而这个发行版带有我不知道的Hibernate版本。机会是一个较新的版本可以解决这个问题(我发布了一个错误报告的链接)。 – Kawu 2010-08-14 00:10:12