2010-08-13 115 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