我正在使用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